Questão Excel - como ter entrada de dados direta ou valor de célula da fórmula


Gostaria de preencher um valor de célula da entrada de chave direta ou ter o valor de célula derivado de uma fórmula.

Exemplo: insira diretamente um número na célula A4 ou tenha o valor de A4 = A2 + A3

Eu não quero que a fórmula sobrescrita deva direcionar a entrada de chave a ser usada.

Thx, espero que isso esclareça.


1


origem


Eu não acho que isso seja possível ... - Jerry
Eu acredito que o que você parece estar pedindo é impossível. O mais próximo que você pode chegar é ter duas células; usar A1, por exemplo, para entrada e, em seguida, defina B1 para =IF(A1<>"", A1, (formula)). - Scott


Respostas:


Assim que um valor é inserido em uma célula, qualquer fórmula nessa célula será sobrescrita. Você pode usar uma rotina VBA para restaurar a fórmula. Suas necessidades devem incluir a lógica para o que tem precedência, ou seja, em que casos uma fórmula deve ser usada e em que casos o número digitado manualmente "ganha".

O código a seguir funciona nessas premissas:

  • ou célula A2 ou A3 se mudou
  • Tanto A2 quanto A3 devem ter valores

Então, quando A2 ou A3 são editados E ambas as células contêm um valor, a macro irá escrever = A2 + A3 na célula A4. Se algum dos valores em A2 ou A3 for texto, a macro ainda será executada e o Excel mostrará a mensagem de erro para adicionar texto com números. Use Sum () para evitar a mensagem de erro.

Se a célula A4 for editada e a fórmula for sobrescrita, esse valor será exibido até que A2 ou A3 sejam editados novamente.

Se isso não corresponder aos seus requisitos, soletre-os com mais detalhes.

O código vai para o módulo Sheet (clique com o botão direito do mouse na guia da planilha, clique em "View code", cole o código na área do código grande).

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Target, Range("A2:A3")) Is Nothing Then
    If WorksheetFunction.Count(Range("A2:A3")) = 2 Then
        Range("A4").Formula = "=A2+A3"
    End If
End If

End Sub

3





VBA pode fazê-lo, ele precisa estar na planilha VBA e pode precisar de alguns ajustes

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    With Target
        If .Count = 1 Then
            If .Column = 4 And .Row = 1 Then
                If IsEmpty(.Value) And .Offset(-1) <> "" AND .Offset(-2) <> "" Then
                    Application.EnableEvents = False
                    .FormulaR1C1 = "=A2+A3"
                    Application.EnableEvents = True
                End If
            End If
        End If
    End With
End Sub

0