Quando o valor é alterado em uma célula no Excel, inclua o novo valor em uma tabela [closed]

0

Estou procurando presumivelmente um script VBA. Basicamente, a situação é a seguinte: Eu tenho uma planilha que busca automaticamente valores de uma API, então, sempre que eu atualizar a planilha, os valores mudam. O que eu quero fazer é adicionar os novos valores de certas células para uma tabela em outra folha. Portanto, sempre que os valores forem alterados, o novo valor será adicionado à primeira linha vazia em uma determinada coluna. Gostaria de acompanhar os dados históricos para acompanhar como esses valores se desenvolvem com o tempo. Um bom bônus seria adicionar a hora exata da atualização específica a uma coluna diferente na mesma linha, mas também posso fazer isso manualmente.

    
por Rasmus Tieaho 30.09.2018 / 03:09

1 resposta

1

Você pode usar essas macros para rastrear as alterações no intervalo de dados específico.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:B100")) Is Nothing Then
Call Master
End If
End Sub

Nota:

  • Esse código executará Macro (mestre) quando qualquer alterações no valor da célula no intervalo.

Insira abaixo o código VBA escrito como módulo padrão.

  • Este código copia todos os valores Novos / Alterados do intervalo A1:B100 para a nova planilha MasterSheet sem gravar registros antigos.

    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
    

Nota:

  • Para dados melhores & Gerenciamento de arquivos Eu usei dois MACRO.
  • A macro usa o COUNTA para descobrir como as linhas podem estar em uso.
  • Se você tiver cabeçalhos de coluna na planilha de origem e no mestre, eles serão duplicados. Então você pode querer fazer o sourceRange começar em A2 .

Ajustar referências de células e nome da planilha conforme necessário.

    
por 30.09.2018 / 12:08