Como fazer com que uma fórmula funcione no fundo de uma célula no Mircosoft Excel e permitir que o usuário insira dados?

Como fazer com que uma fórmula funcione no fundo de uma célula no Mircosoft Excel e permitir que o usuário insira dados?

Estou tentando criar uma planilha que compile os dados de várias células.

Essencialmente, quero que a célula A1reflita Sheet1as Sheet2mesmas 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!A1ou =Sheet1!A1estou 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 A1ambas 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 A1em 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:

  1. Duplo clickPlanilha2no lado esquerdo.
  2. Cole o código no lado direito.
  3. 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=1e thecolumn=1significa 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) Thencopiará as alterações que acontecem na coluna que tem o mesmo valor da variável, thecolumnindependentemente da linha.

Outro exemplo:

Alterar a linha de verificação para If (cellcolumn > thecolumn) Thencopiará as alterações que acontecem em qualquer coluna maior que o valor de thecolumnqualquer linha.

informação relacionada