Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Не перезаписывать макросом имеющиеся данные в ячейках - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Не перезаписывать макросом имеющиеся данные в ячейках
xDriver Дата: Воскресенье, 31.05.2020, 13:21 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Всем привет.
Имеется книга, много вкладок, данные берутся из стороннего приложения (Ынтырнет Ыксплорер), вставляются на лист "RT". Макросом берём нужные данные, вставляем в другие таблицы на вкладке "Ввод данных", умножаем, округляем. Это я решил, пусть коряво и колхозно, но сделал сам и оно работает.
Проблема в том, что макрос при каждой вставке, перезаписывает ВСЕ ячейки. Нужно, чтобы он НЕ ПЕРЕЗАПИСЫВАЛ уже имеющиеся данные, а вставлял только в пустые ячейки. Вот с этим затык. Подскажите пожалуйста.
Если у когонить появится желание оптимизировать мои кракозябры - буду благодарен.
Файлик приложил.
К сообщению приложен файл: 2_Excel_97_2003.xls (68.0 Kb)


Сообщение отредактировал xDriver - Воскресенье, 31.05.2020, 13:22
 
Ответить
СообщениеВсем привет.
Имеется книга, много вкладок, данные берутся из стороннего приложения (Ынтырнет Ыксплорер), вставляются на лист "RT". Макросом берём нужные данные, вставляем в другие таблицы на вкладке "Ввод данных", умножаем, округляем. Это я решил, пусть коряво и колхозно, но сделал сам и оно работает.
Проблема в том, что макрос при каждой вставке, перезаписывает ВСЕ ячейки. Нужно, чтобы он НЕ ПЕРЕЗАПИСЫВАЛ уже имеющиеся данные, а вставлял только в пустые ячейки. Вот с этим затык. Подскажите пожалуйста.
Если у когонить появится желание оптимизировать мои кракозябры - буду благодарен.
Файлик приложил.

Автор - xDriver
Дата добавления - 31.05.2020 в 13:21
Pelena Дата: Воскресенье, 31.05.2020, 13:41 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19404
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Здравствуйте.
В смысле "пустые"? Чтобы дописывал ниже или в заданном диапазоне могут быть пустые и непустые ячейки?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗдравствуйте.
В смысле "пустые"? Чтобы дописывал ниже или в заданном диапазоне могут быть пустые и непустые ячейки?

Автор - Pelena
Дата добавления - 31.05.2020 в 13:41
xDriver Дата: Воскресенье, 31.05.2020, 14:19 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Запись идёт построчно, с течением времени. Одномоментно записывается одна строка по всему документу. Да, получается, что нужно дописывать строку (в обычном режиме), очень редко, но бывают случаи, когда нужно или диапазон записать (первые три-четыре строки например) или удалив значения из пары-тройки ячеек, вставить в них данные, которые уже есть на листе "RT". Или как вариант, могут сразу заполнить один-два столбца и дописывать в свободные. Потому и "пустые ячейки", так ИМХО, более точно можно обозвать суть проблемы.
 
Ответить
СообщениеЗапись идёт построчно, с течением времени. Одномоментно записывается одна строка по всему документу. Да, получается, что нужно дописывать строку (в обычном режиме), очень редко, но бывают случаи, когда нужно или диапазон записать (первые три-четыре строки например) или удалив значения из пары-тройки ячеек, вставить в них данные, которые уже есть на листе "RT". Или как вариант, могут сразу заполнить один-два столбца и дописывать в свободные. Потому и "пустые ячейки", так ИМХО, более точно можно обозвать суть проблемы.

Автор - xDriver
Дата добавления - 31.05.2020 в 14:19
Pelena Дата: Воскресенье, 31.05.2020, 14:51 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19404
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Если правильно поняла, то так
К сообщению приложен файл: 2628361.xls (37.5 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЕсли правильно поняла, то так

Автор - Pelena
Дата добавления - 31.05.2020 в 14:51
xDriver Дата: Воскресенье, 31.05.2020, 15:08 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Изумительно! Огромное спасибо! :) Очень надеюсь, что у меня хватит ресурсов, чтобы интегрировать это в "боевой" файлик :)
Спасибо! И плюсик Вам в репу :)
пы.сы.
Скажите пожалуйста, Cells(i, j + 14), что делает тут 14? Я остальное понял, а с 14 забуксовал.
Если на "RT" есть пустые строки, то на "ввод данных" конечные ячейки заполняются нулями и макрос перестаёт работать.
И округление. Не обратил внимание раньше. Но средствами Excel, 2.5 округляет до 3, а макрос до 2..
К сообщению приложен файл: zero_in_empty_c.xls (43.5 Kb)


Сообщение отредактировал xDriver - Воскресенье, 31.05.2020, 16:12
 
Ответить
СообщениеИзумительно! Огромное спасибо! :) Очень надеюсь, что у меня хватит ресурсов, чтобы интегрировать это в "боевой" файлик :)
Спасибо! И плюсик Вам в репу :)
пы.сы.
Скажите пожалуйста, Cells(i, j + 14), что делает тут 14? Я остальное понял, а с 14 забуксовал.
Если на "RT" есть пустые строки, то на "ввод данных" конечные ячейки заполняются нулями и макрос перестаёт работать.
И округление. Не обратил внимание раньше. Но средствами Excel, 2.5 округляет до 3, а макрос до 2..

Автор - xDriver
Дата добавления - 31.05.2020 в 15:08
Pelena Дата: Воскресенье, 31.05.2020, 16:12 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 19404
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
что делает тут 14
это на столько столбцов источник (столбец Р) правее приёмника (столбец В)

конечные ячейки заполняются нулями
да, а как надо?

макрос перестаёт работать
в чём это выражается?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
что делает тут 14
это на столько столбцов источник (столбец Р) правее приёмника (столбец В)

конечные ячейки заполняются нулями
да, а как надо?

макрос перестаёт работать
в чём это выражается?

Автор - Pelena
Дата добавления - 31.05.2020 в 16:12
RAN Дата: Воскресенье, 31.05.2020, 16:43 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщениеhttps://pikabu.ru/story....6759441

Автор - RAN
Дата добавления - 31.05.2020 в 16:43
xDriver Дата: Понедельник, 01.06.2020, 06:01 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
https://pikabu.ru/story....6759441

Вопрос стоит о разнице в округлении средствами Excel и VBA.
 
Ответить
Сообщение
https://pikabu.ru/story....6759441

Вопрос стоит о разнице в округлении средствами Excel и VBA.

Автор - xDriver
Дата добавления - 01.06.2020 в 06:01
xDriver Дата: Понедельник, 01.06.2020, 06:11 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
в чём это выражается?

Если есть пустые строки на листе "RT", то при заполнении макросом строк на листе "ввод данных", он их заполняет нулями. После этого, когда на листе "RT", данные появляются, то в "ввод данных" они не копируются, макрос не перезаписывает не пустые ячейки (что и требовалось доказать, макрос работает отлично).
Рекордером получил "SkipBlanks:=True", можно это прикрутить в макрос?


Сообщение отредактировал xDriver - Понедельник, 01.06.2020, 07:06
 
Ответить
Сообщение
в чём это выражается?

Если есть пустые строки на листе "RT", то при заполнении макросом строк на листе "ввод данных", он их заполняет нулями. После этого, когда на листе "RT", данные появляются, то в "ввод данных" они не копируются, макрос не перезаписывает не пустые ячейки (что и требовалось доказать, макрос работает отлично).
Рекордером получил "SkipBlanks:=True", можно это прикрутить в макрос?

Автор - xDriver
Дата добавления - 01.06.2020 в 06:11
xDriver Дата: Понедельник, 01.06.2020, 08:02 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Костыли наше всё )) Если не получается не получать нули, их можно ... удалить
[vba]
Код
        With Worksheets("ввод данных")
        For i = 2 To 13
            For j = 2 To 5
                If .Cells(i, j) = "" Then .Cells(i, j) = Round(Worksheets("RT2").Cells(i, j + 14) * 100, 0)
            Next j
        Next i
    End With
        
    With Worksheets("ввод данных")
        For i = 2 To 13
            For j = 2 To 5
                If .Cells(i, j) = "0" Then .Cells(i, j).ClearContents
            Next j
        Next i
    End With
[/vba]
Осталось победить округление, чтобы 2,5 было равно 3, а не 2


Сообщение отредактировал xDriver - Понедельник, 01.06.2020, 08:50
 
Ответить
СообщениеКостыли наше всё )) Если не получается не получать нули, их можно ... удалить
[vba]
Код
        With Worksheets("ввод данных")
        For i = 2 To 13
            For j = 2 To 5
                If .Cells(i, j) = "" Then .Cells(i, j) = Round(Worksheets("RT2").Cells(i, j + 14) * 100, 0)
            Next j
        Next i
    End With
        
    With Worksheets("ввод данных")
        For i = 2 To 13
            For j = 2 To 5
                If .Cells(i, j) = "0" Then .Cells(i, j).ClearContents
            Next j
        Next i
    End With
[/vba]
Осталось победить округление, чтобы 2,5 было равно 3, а не 2

Автор - xDriver
Дата добавления - 01.06.2020 в 08:02
Pelena Дата: Понедельник, 01.06.2020, 08:23 | Сообщение № 11
Группа: Админы
Ранг: Местный житель
Сообщений: 19404
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Можно просто добавить проверку на пустые ячейки в исходнике
[vba]
Код
    With Worksheets("ввод данных")
        For i = 2 To 13
            For j = 2 To 5
                If .Cells(i, j) = "" And Worksheets("RT2").Cells(i, j + 14) <> "" Then .Cells(i, j) = Round(Worksheets("RT2").Cells(i, j + 14) * 100, 0)
            Next j
        Next i
    End With
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеМожно просто добавить проверку на пустые ячейки в исходнике
[vba]
Код
    With Worksheets("ввод данных")
        For i = 2 To 13
            For j = 2 To 5
                If .Cells(i, j) = "" And Worksheets("RT2").Cells(i, j + 14) <> "" Then .Cells(i, j) = Round(Worksheets("RT2").Cells(i, j + 14) * 100, 0)
            Next j
        Next i
    End With
[/vba]

Автор - Pelena
Дата добавления - 01.06.2020 в 08:23
xDriver Дата: Понедельник, 01.06.2020, 08:55 | Сообщение № 12
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Можно просто добавить проверку на пустые ячейки в исходнике

Спасибо Вам большое! Если бы ещё это было так "просто" ))
 
Ответить
Сообщение
Можно просто добавить проверку на пустые ячейки в исходнике

Спасибо Вам большое! Если бы ещё это было так "просто" ))

Автор - xDriver
Дата добавления - 01.06.2020 в 08:55
Pelena Дата: Понедельник, 01.06.2020, 09:02 | Сообщение № 13
Группа: Админы
Ранг: Местный житель
Сообщений: 19404
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
А для округления попробуйте вместо Round написать Application.Round


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеА для округления попробуйте вместо Round написать Application.Round

Автор - Pelena
Дата добавления - 01.06.2020 в 09:02
xDriver Дата: Понедельник, 01.06.2020, 09:11 | Сообщение № 14
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
А для округления попробуйте

Нагуглил WorksheetFunction.Round, потестил, работает.
Ваш совет Application.Round тоже, как часики.
Идеально. Спасибо!


Сообщение отредактировал xDriver - Понедельник, 01.06.2020, 09:11
 
Ответить
Сообщение
А для округления попробуйте

Нагуглил WorksheetFunction.Round, потестил, работает.
Ваш совет Application.Round тоже, как часики.
Идеально. Спасибо!

Автор - xDriver
Дата добавления - 01.06.2020 в 09:11
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!