Копирование данных нарастающим итогом + проставление даты
ArkaIIIa
Дата: Четверг, 14.12.2017, 09:21 |
Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация:
115
±
Замечаний:
0% ±
2010
Доброго всем дня, уважаемые господа! Вынужден вновь просить Вас о помощи! В примере 2 листа. На первом - таблица, в которую "в моменте" заносятся данные. На втором - аналогичная таблица + столбец "дата-время", для архивации данных с листа1. Нужно, чтобы макрос забирал данные с листа 1 (диапазон в примере от А4 до С? (последней заполненной строки), и вставлял их в таблицу с одноименными полями Листа2 (добавлял к уже имеющимся данным в конец списка) + в столбец "дата-время" записывал дату время запуска. Заранее большое всем спасибо!
Доброго всем дня, уважаемые господа! Вынужден вновь просить Вас о помощи! В примере 2 листа. На первом - таблица, в которую "в моменте" заносятся данные. На втором - аналогичная таблица + столбец "дата-время", для архивации данных с листа1. Нужно, чтобы макрос забирал данные с листа 1 (диапазон в примере от А4 до С? (последней заполненной строки), и вставлял их в таблицу с одноименными полями Листа2 (добавлял к уже имеющимся данным в конец списка) + в столбец "дата-время" записывал дату время запуска. Заранее большое всем спасибо! ArkaIIIa
Ответить
Сообщение Доброго всем дня, уважаемые господа! Вынужден вновь просить Вас о помощи! В примере 2 листа. На первом - таблица, в которую "в моменте" заносятся данные. На втором - аналогичная таблица + столбец "дата-время", для архивации данных с листа1. Нужно, чтобы макрос забирал данные с листа 1 (диапазон в примере от А4 до С? (последней заполненной строки), и вставлял их в таблицу с одноименными полями Листа2 (добавлял к уже имеющимся данным в конец списка) + в столбец "дата-время" записывал дату время запуска. Заранее большое всем спасибо! Автор - ArkaIIIa Дата добавления - 14.12.2017 в 09:21
Karataev
Дата: Четверг, 14.12.2017, 09:31 |
Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1342
Репутация:
535
±
Замечаний:
0% ±
Excel
[vba]
Код
Sub Скопировать() Dim sh1 As Worksheet, sh2 As Worksheet Dim lr1 As Long, lr2 As Long Application.ScreenUpdating = False Set sh1 = Worksheets("Лист1") Set sh2 = Worksheets("Лист2") lr1 = sh1.Columns("A:C").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row lr2 = sh2.Columns("A:C").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row sh1.Range("A4:C" & lr1).Copy sh2.Cells(lr2 + 1, "A") sh2.Cells(lr2 + 1, "D").Resize(lr1 - 3).Value = Now Application.ScreenUpdating = True MsgBox "Готово!", vbInformation End Sub
[/vba]
[vba]
Код
Sub Скопировать() Dim sh1 As Worksheet, sh2 As Worksheet Dim lr1 As Long, lr2 As Long Application.ScreenUpdating = False Set sh1 = Worksheets("Лист1") Set sh2 = Worksheets("Лист2") lr1 = sh1.Columns("A:C").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row lr2 = sh2.Columns("A:C").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row sh1.Range("A4:C" & lr1).Copy sh2.Cells(lr2 + 1, "A") sh2.Cells(lr2 + 1, "D").Resize(lr1 - 3).Value = Now Application.ScreenUpdating = True MsgBox "Готово!", vbInformation End Sub
[/vba]
Karataev
Ответить
Сообщение
[vba]
Код
Sub Скопировать() Dim sh1 As Worksheet, sh2 As Worksheet Dim lr1 As Long, lr2 As Long Application.ScreenUpdating = False Set sh1 = Worksheets("Лист1") Set sh2 = Worksheets("Лист2") lr1 = sh1.Columns("A:C").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row lr2 = sh2.Columns("A:C").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row sh1.Range("A4:C" & lr1).Copy sh2.Cells(lr2 + 1, "A") sh2.Cells(lr2 + 1, "D").Resize(lr1 - 3).Value = Now Application.ScreenUpdating = True MsgBox "Готово!", vbInformation End Sub
[/vba]
Автор - Karataev Дата добавления - 14.12.2017 в 09:31
ArkaIIIa
Дата: Четверг, 14.12.2017, 10:16 |
Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация:
115
±
Замечаний:
0% ±
2010
Karataev Именно то, что надо! Большое спасибо!
Karataev Именно то, что надо! Большое спасибо!ArkaIIIa
Ответить
Сообщение Karataev Именно то, что надо! Большое спасибо!Автор - ArkaIIIa Дата добавления - 14.12.2017 в 10:16
ArkaIIIa
Дата: Четверг, 14.12.2017, 10:46 |
Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация:
115
±
Замечаний:
0% ±
2010
Karataev Прошу прощения, а что в коде нужно изменить, чтобы при вставке только значения вставлялись?
Karataev Прошу прощения, а что в коде нужно изменить, чтобы при вставке только значения вставлялись?ArkaIIIa
Ответить
Сообщение Karataev Прошу прощения, а что в коде нужно изменить, чтобы при вставке только значения вставлялись?Автор - ArkaIIIa Дата добавления - 14.12.2017 в 10:46
Karataev
Дата: Четверг, 14.12.2017, 10:50 |
Сообщение № 5
Группа: Проверенные
Ранг: Старожил
Сообщений: 1342
Репутация:
535
±
Замечаний:
0% ±
Excel
[vba]
Код
Sub Скопировать() Dim sh1 As Worksheet, sh2 As Worksheet Dim lr1 As Long, lr2 As Long Application.ScreenUpdating = False Set sh1 = Worksheets("Лист1") Set sh2 = Worksheets("Лист2") lr1 = sh1.Columns("A:C").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row lr2 = sh2.Columns("A:C").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row sh2.Cells(lr2 + 1, "A").Resize(lr1 - 3, 3).Value = sh1.Range("A4:C" & lr1).Value sh2.Cells(lr2 + 1, "D").Resize(lr1 - 3).Value = Now Application.ScreenUpdating = True MsgBox "Готово!", vbInformation End Sub
[/vba]
[vba]
Код
Sub Скопировать() Dim sh1 As Worksheet, sh2 As Worksheet Dim lr1 As Long, lr2 As Long Application.ScreenUpdating = False Set sh1 = Worksheets("Лист1") Set sh2 = Worksheets("Лист2") lr1 = sh1.Columns("A:C").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row lr2 = sh2.Columns("A:C").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row sh2.Cells(lr2 + 1, "A").Resize(lr1 - 3, 3).Value = sh1.Range("A4:C" & lr1).Value sh2.Cells(lr2 + 1, "D").Resize(lr1 - 3).Value = Now Application.ScreenUpdating = True MsgBox "Готово!", vbInformation End Sub
[/vba]
Karataev
Ответить
Сообщение
[vba]
Код
Sub Скопировать() Dim sh1 As Worksheet, sh2 As Worksheet Dim lr1 As Long, lr2 As Long Application.ScreenUpdating = False Set sh1 = Worksheets("Лист1") Set sh2 = Worksheets("Лист2") lr1 = sh1.Columns("A:C").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row lr2 = sh2.Columns("A:C").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row sh2.Cells(lr2 + 1, "A").Resize(lr1 - 3, 3).Value = sh1.Range("A4:C" & lr1).Value sh2.Cells(lr2 + 1, "D").Resize(lr1 - 3).Value = Now Application.ScreenUpdating = True MsgBox "Готово!", vbInformation End Sub
[/vba]
Автор - Karataev Дата добавления - 14.12.2017 в 10:50
ArkaIIIa
Дата: Четверг, 14.12.2017, 11:12 |
Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация:
115
±
Замечаний:
0% ±
2010
Karataev Похоже, что все таки копирует ячейки. У меня в ячейках, которые копируются - выпадающие списки, и при вставке вставляются не только значения, но и формат выпадающего списка тоже.
Karataev Похоже, что все таки копирует ячейки. У меня в ячейках, которые копируются - выпадающие списки, и при вставке вставляются не только значения, но и формат выпадающего списка тоже.ArkaIIIa
Ответить
Сообщение Karataev Похоже, что все таки копирует ячейки. У меня в ячейках, которые копируются - выпадающие списки, и при вставке вставляются не только значения, но и формат выпадающего списка тоже.Автор - ArkaIIIa Дата добавления - 14.12.2017 в 11:12
Karataev
Дата: Четверг, 14.12.2017, 11:21 |
Сообщение № 7
Группа: Проверенные
Ранг: Старожил
Сообщений: 1342
Репутация:
535
±
Замечаний:
0% ±
Excel
Макрос в посте 5 копирует только значения. Или у Вас уже есть списки на листе 2 или Вы используете макрос из поста 2, а думаете, что используете макрос из поста 5.
Макрос в посте 5 копирует только значения. Или у Вас уже есть списки на листе 2 или Вы используете макрос из поста 2, а думаете, что используете макрос из поста 5. Karataev
Ответить
Сообщение Макрос в посте 5 копирует только значения. Или у Вас уже есть списки на листе 2 или Вы используете макрос из поста 2, а думаете, что используете макрос из поста 5. Автор - Karataev Дата добавления - 14.12.2017 в 11:21
ArkaIIIa
Дата: Четверг, 14.12.2017, 11:38 |
Сообщение № 8
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация:
115
±
Замечаний:
0% ±
2010
Karataev Да, действительно, извиняюсь. И еще один нюанс (прошу прощения, что сразу не уточнил - ввиду полного профанства в части VBA и отсутствия понимания как и что там работает - сразу не предал значения). Макрос может искать конец данных для копирования на основании значений в ячейке? Поясню, у меня в одном из столбцов формула + ЕСЛИОШИБКА, в случае ошибки возвращается "", а ошибка возникает только если вся строка пустая. Но макрос, видимо, не считает формулу пустым значением ячейки и копирует бОльший диапазон, чем надо.
Karataev Да, действительно, извиняюсь. И еще один нюанс (прошу прощения, что сразу не уточнил - ввиду полного профанства в части VBA и отсутствия понимания как и что там работает - сразу не предал значения). Макрос может искать конец данных для копирования на основании значений в ячейке? Поясню, у меня в одном из столбцов формула + ЕСЛИОШИБКА, в случае ошибки возвращается "", а ошибка возникает только если вся строка пустая. Но макрос, видимо, не считает формулу пустым значением ячейки и копирует бОльший диапазон, чем надо.ArkaIIIa
Ответить
Сообщение Karataev Да, действительно, извиняюсь. И еще один нюанс (прошу прощения, что сразу не уточнил - ввиду полного профанства в части VBA и отсутствия понимания как и что там работает - сразу не предал значения). Макрос может искать конец данных для копирования на основании значений в ячейке? Поясню, у меня в одном из столбцов формула + ЕСЛИОШИБКА, в случае ошибки возвращается "", а ошибка возникает только если вся строка пустая. Но макрос, видимо, не считает формулу пустым значением ячейки и копирует бОльший диапазон, чем надо.Автор - ArkaIIIa Дата добавления - 14.12.2017 в 11:38
Karataev
Дата: Четверг, 14.12.2017, 11:45 |
Сообщение № 9
Группа: Проверенные
Ранг: Старожил
Сообщений: 1342
Репутация:
535
±
Замечаний:
0% ±
Excel
[vba]
Код
Sub Скопировать() Dim sh1 As Worksheet, sh2 As Worksheet Dim lr1 As Long, lr2 As Long Application.ScreenUpdating = False Set sh1 = Worksheets("Лист1") Set sh2 = Worksheets("Лист2") lr1 = sh1.Columns("A:C").Find(What:="*", LookIn:=xlValues, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row lr2 = sh2.Columns("A:C").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row sh2.Cells(lr2 + 1, "A").Resize(lr1 - 3, 3).Value = sh1.Range("A4:C" & lr1).Value sh2.Cells(lr2 + 1, "D").Resize(lr1 - 3).Value = Now Application.ScreenUpdating = True MsgBox "Готово!", vbInformation End Sub
[/vba]
[vba]
Код
Sub Скопировать() Dim sh1 As Worksheet, sh2 As Worksheet Dim lr1 As Long, lr2 As Long Application.ScreenUpdating = False Set sh1 = Worksheets("Лист1") Set sh2 = Worksheets("Лист2") lr1 = sh1.Columns("A:C").Find(What:="*", LookIn:=xlValues, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row lr2 = sh2.Columns("A:C").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row sh2.Cells(lr2 + 1, "A").Resize(lr1 - 3, 3).Value = sh1.Range("A4:C" & lr1).Value sh2.Cells(lr2 + 1, "D").Resize(lr1 - 3).Value = Now Application.ScreenUpdating = True MsgBox "Готово!", vbInformation End Sub
[/vba]
Karataev
Ответить
Сообщение
[vba]
Код
Sub Скопировать() Dim sh1 As Worksheet, sh2 As Worksheet Dim lr1 As Long, lr2 As Long Application.ScreenUpdating = False Set sh1 = Worksheets("Лист1") Set sh2 = Worksheets("Лист2") lr1 = sh1.Columns("A:C").Find(What:="*", LookIn:=xlValues, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row lr2 = sh2.Columns("A:C").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row sh2.Cells(lr2 + 1, "A").Resize(lr1 - 3, 3).Value = sh1.Range("A4:C" & lr1).Value sh2.Cells(lr2 + 1, "D").Resize(lr1 - 3).Value = Now Application.ScreenUpdating = True MsgBox "Готово!", vbInformation End Sub
[/vba]
Автор - Karataev Дата добавления - 14.12.2017 в 11:45
ArkaIIIa
Дата: Четверг, 14.12.2017, 11:53 |
Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация:
115
±
Замечаний:
0% ±
2010
Karataev Еще раз большущее спасибо!
Karataev Еще раз большущее спасибо!ArkaIIIa
Ответить
Сообщение Karataev Еще раз большущее спасибо!Автор - ArkaIIIa Дата добавления - 14.12.2017 в 11:53