Коли значення змінюється в комірці на excel, додайте нове значення до таблиці [закрито]


0

Я шукаю сценарій VBA. В основному ситуація така: у мене є аркуш, який автоматично отримує значення з API, тому щоразу, коли я оновлюю аркуш, значення змінюються. Що я хочу зробити - це додати нові значення з певних комірок до таблиці на іншому аркуші. Тому щоразу, коли значення змінюються, нове значення додається до першого порожнього рядка у певному стовпці. Я хотів би відслідковувати історичні дані, щоб слідкувати за тим, як ці значення розвиваються з часом. Приємним бонусом було б додавання точного часу цього конкретного оновлення до іншого стовпця в тому ж рядку, але я можу це зробити і вручну.

Відповіді:


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щоб розробити, як можуть використовуватися рядки.
  • Якщо у вас є заголовки стовпців на початковому аркуші та Master, то вони будуть дублюватися. Тож ви, можливо, захочете sourceRangeпочати на A2.

За необхідності відрегулюйте посилання на клітинку та назву аркуша.


Це здається правильним, але у мене все ще є проблеми. Я, мабуть, не був повністю зрозумілий у своєму початковому дописі, тому шкодую за це. З того, що я збираю, ваш код додає будь-які змінені значення в цьому конкретному діапазоні до кінця стовпця А на MasterSheet. Однак це не зовсім те, що я шукаю. Скажімо, комірка A2 - це значення x, а B2 - значення y. Коли значення x змінюється, я хотів би додати це до стовпця А на іншому аркуші. A1 буде заголовком "значення x", і цей стовпець містить лише попередні значення значення x. Коли я змінюю значення y в початковому аркуші, яке переходитиме до стовпця B на другому аркуші.
Расмус Тіахо

@RasmusTieaho, я запропонував рішення, засноване на операційній програмі, що я хотів би запропонувати, оскільки мій код спостерігає за всіма змінами у вихідному аркуші та оновленнях до іншого, і він може бути змінений відповідно до ваших останніх потреб, тому використовуйте його та робіть необхідна корекція ☺
Раджеш S

@Rasmus Ви не можете змінити питання після того, як хтось уже витратив час і сили на відповіді. Будь ласка, надайте належну оцінку отриманій вами відповіді, якщо ви думаєте, що вона відповідає на ваше оригінальне письмове запитання. Ви можете задати нове запитання, яке краще відображатиме вашу актуальну проблему.
Том Брунберг

@TomBrunberg, ти підняв хорошу точку. ОП повинні бути дуже обережними під час публікації ,, і часті зміни відхиляють відповідача. ☺
Раджеш S

Добре, про це не знали.
Расмус Тіахо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.