
Estou tentando criar uma planilha que compile os dados de várias células.
Essencialmente, quero que a célula A1
reflita Sheet1
as Sheet2
mesmas informações inseridas pelo usuário, sem excluir a fórmula quando os dados forem inseridos.
Preciso que os usuários consigam inserir dados nessas células mas usando =Sheet2!A1
ou =Sheet1!A1
estou criando uma referência circular e também deixando a fórmula podendo ser deletada pelos usuários.
Alguém pode recomendar uma maneira de resolver isso?
Responder1
Você não pode inserir dados em uma célula que contém uma fórmula, preservando a fórmula ao mesmo tempo.
Uma solução é fazer com que o usuário insira dados em uma célula diferente e, em seguida, faça referência a essa célula em A1
ambas as planilhas.
Responder2
Você não pode fazer isso sem uma macro. Este código deve funcionar:
Private Sub Worksheet_Change(ByVal Target As Range)
therow = 1
thecolumn = 1
Dim wks As Worksheet
cellrow = Target.Row
cellcolumn = Target.Column
If (cellrow = therow And cellcolumn = thecolumn) Then
Set wks = ThisWorkbook.Worksheets("Sheet2")
wks.Cells(cellrow, cellcolumn) = Target.Value
End If
End Sub
Abra macros com ALT+ F11, clique duas vezesFolha1no lado esquerdo e cole o código no lado direito. Este código é executado em Sheet 1
, portanto ele copia as alterações Sheet1 A1
em Sheet2 A1
.
Toda vez que há uma alteração na planilha esta macro é executada. Ele verifica se a célula alterada está na linha 1 e coluna 1 (célula A1) e depois copia o valor na mesma célula emPlanilha2.
Se você quiser verificar as alterações dePlanilha2paraFolha1também, então:
- Duplo clickPlanilha2no lado esquerdo.
- Cole o código no lado direito.
- Altere a linha
Set wks = ThisWorkbook.Worksheets("Sheet2")
para indicar o novo destino:Set wks = ThisWorkbook.Worksheets("Sheet1")
.
No momento, esta macro usa as variáveisa filaea colunapara tomar a decisão de copiar o valor para a outra planilha. No início eles são definidos como 1 nas linhas therow=1
e thecolumn=1
significa que estamos interessados na célulaA1. E ainda verificamos se a célula modificada corresponde a esses valores na linha If (cellrow = therow And cellcolumn = thecolumn) Then
.
Você pode modificar os valores para personalizá-los de acordo com suas necessidades, até mesmo verificando uma coluna ou linha completa, por exemplo:
Alterar a linha de verificação para If (cellcolumn = thecolumn) Then
copiará as alterações que acontecem na coluna que tem o mesmo valor da variável, thecolumn
independentemente da linha.
Outro exemplo:
Alterar a linha de verificação para If (cellcolumn > thecolumn) Then
copiará as alterações que acontecem em qualquer coluna maior que o valor de thecolumn
qualquer linha.