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

 

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

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Не перезаписывать макросом имеющиеся данные в ячейках
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
Группа: Админы
Ранг: Местный житель
Сообщений: 19517
Репутация: 4632 ±
Замечаний: ±

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
Группа: Админы
Ранг: Местный житель
Сообщений: 19517
Репутация: 4632 ±
Замечаний: ±

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
Группа: Админы
Ранг: Местный житель
Сообщений: 19517
Репутация: 4632 ±
Замечаний: ±

Excel 365 & Mac Excel
Цитата xDriver, 31.05.2020 в 15:08, в сообщении № 5 ( писал(а)):
что делает тут 14
это на столько столбцов источник (столбец Р) правее приёмника (столбец В)

Цитата xDriver, 31.05.2020 в 15:08, в сообщении № 5 ( писал(а)):
конечные ячейки заполняются нулями
да, а как надо?

Цитата xDriver, 31.05.2020 в 15:08, в сообщении № 5 ( писал(а)):
макрос перестаёт работать
в чём это выражается?


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

Цитата xDriver, 31.05.2020 в 15:08, в сообщении № 5 ( писал(а)):
конечные ячейки заполняются нулями
да, а как надо?

Цитата xDriver, 31.05.2020 в 15:08, в сообщении № 5 ( писал(а)):
макрос перестаёт работать
в чём это выражается?

Автор - 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
Цитата RAN, 31.05.2020 в 16:43, в сообщении № 7 ( писал(а)):
https://pikabu.ru/story....6759441

Вопрос стоит о разнице в округлении средствами Excel и VBA.
 
Ответить
Сообщение
Цитата RAN, 31.05.2020 в 16:43, в сообщении № 7 ( писал(а)):
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
Цитата Pelena, 31.05.2020 в 16:12, в сообщении № 6 ( писал(а)):
в чём это выражается?

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


Сообщение отредактировал xDriver - Понедельник, 01.06.2020, 07:06
 
Ответить
Сообщение
Цитата Pelena, 31.05.2020 в 16:12, в сообщении № 6 ( писал(а)):
в чём это выражается?

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

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

Excel 2016
Костыли наше всё )) Если не получается не получать нули, их можно ... удалить

        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


Осталось победить округление, чтобы 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
Группа: Админы
Ранг: Местный житель
Сообщений: 19517
Репутация: 4632 ±
Замечаний: ±

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

    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



"Черт возьми, Холмс! Но как??!!"
Ю-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
Цитата Pelena, 01.06.2020 в 08:23, в сообщении № 11 ( писал(а)):
Можно просто добавить проверку на пустые ячейки в исходнике

Спасибо Вам большое! Если бы ещё это было так "просто" ))
 
Ответить
Сообщение
Цитата Pelena, 01.06.2020 в 08:23, в сообщении № 11 ( писал(а)):
Можно просто добавить проверку на пустые ячейки в исходнике

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

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

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
Цитата Pelena, 01.06.2020 в 09:02, в сообщении № 13 ( писал(а)):
А для округления попробуйте

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


Сообщение отредактировал xDriver - Понедельник, 01.06.2020, 09:11
 
Ответить
Сообщение
Цитата Pelena, 01.06.2020 в 09:02, в сообщении № 13 ( писал(а)):
А для округления попробуйте

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

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

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