Я ищу предположительно сценарий VBA. В основном ситуация такова: у меня есть лист, который автоматически выбирает значения из API, поэтому при каждом обновлении листа значения меняются. Что я хочу сделать, это добавить новые значения из определенных ячеек в таблицу на другом листе. Поэтому, когда значения меняются, новое значение добавляется в первую пустую строку в определенном столбце. Я хотел бы отслеживать исторические данные, чтобы следить за тем, как эти значения развиваются с течением времени. Приятным бонусом было бы добавление точного времени этого конкретного обновления в другой столбец в той же строке, но я могу сделать это и вручную.
1 ответ
1
Вы можете использовать эти макросы для отслеживания изменений в конкретном диапазоне данных.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:B100")) Is Nothing Then
Call Master
End If
End Sub
Замечания:
- Этот код запускает макрос (мастер), когда любое значение ячейки изменяется в диапазоне.
Введите ниже написанный код VBA в качестве стандартного модуля.
Этот код будет копировать каждое новое / измененное значение из диапазона
A1:B100
в мастер -лист нового листа безMasterSheet
старых записей.Sub Master() Dim sourceSheet As Worksheet Dim sourceRange As Range Dim sourceRows As Integer Set sourceSheet = Worksheets("Sheet1") sourceRows = WorksheetFunction.CountA(sourceSheet.Range("A:A")) Set sourceRange = sourceSheet.Range("A1:B" & sourceRows) Dim targetSheet As Worksheet Dim targetRange As Range Dim targetRows As Integer Set targetSheet = Worksheets("MasterSheet") targetRows = WorksheetFunction.CountA(targetSheet.Range("A:A")) Set targetRange = targetSheet.Range("A" & targetRows + 1 & ":B" & targetRows + 1 + sourceRows) sourceRange.Copy Destination:=targetRange End Sub
Замечания:
- Для лучшего управления данными и файлами я использовал два MACRO.
- Макрос использует
COUNTA
чтобы выяснить, как могут использоваться строки. - Если у вас есть заголовки столбцов на исходном листе и в мастер-файле, они дублируются. Поэтому вы можете захотеть, чтобы
sourceRange
начинался сA2
.
При необходимости измените ссылки на ячейки и имя листа.