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

1

Gostaria de preencher um valor de célula da entrada de chave direta ou ter o valor da 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.

    
por user6784 23.09.2013 / 20:57

2 respostas

3

Assim que um valor é inserido em uma célula, qualquer fórmula nessa célula será substituída. Você pode usar uma rotina VBA para restaurar a fórmula. Seus requisitos 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:

  • a célula A2 ou A3 é alterada
  • Tanto A2 quanto A3 devem ter valores

Assim, 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, escreva-os com mais detalhes.

O código vai para o módulo Sheet (clique com o botão direito do mouse na guia sheet, 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
    
por 24.09.2013 / 02:45
0

VBA pode fazer isso, 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
    
por 24.09.2013 / 00:45