EXCEL - Como ter uma saída de fórmula e entrada do usuário na mesma célula?

0

Eu gostaria da ajuda de alguém, pois acredito que esse problema exija o VB. Eu basicamente tenho uma CÉLULA (A4) onde as pessoas estarão inserindo valores para descobrir os cálculos correspondentes exibidos abaixo.

No entanto, quero adicionar uma função adicional em que os valores populares são inseridos automaticamente na mesma célula (A4).

As células E7 e E8 receberão entrada e multiplicarão por 960 (E7) ou 765 (E8) e transferirão esse valor para célula (A4) para que o restante das fórmulas seja atualizado corretamente.

Basicamente, o usuário deve inserir os sacos diretamente em A4 ou inserir o número de contêineres em E7 ou E8.

** Aqui é onde eu tenho o problema, porque quando eu insiro uma fórmula em A4, ele é deletado quando você insere um valor diretamente nele.

** Observe também que o resultado de E7 e E8 deve ser exibido (em A4), como eu preciso também.

Minha planilha:

    
por Josh 18.09.2014 / 20:42

4 respostas

3

Você pode usar uma função de mudança de planilha em vba. Algo como

Private Sub Worksheet_Change(ByVal target As Range)

If Intersect(target, Range("e7:e8")) Is Nothing Then Exit sub

Application.enableevents = False
ActiveSheet.range("A4").formula="=if(e7="""",e8*765,e7*960)"
Application.enableevents = True

End Sub

Sempre que a planilha muda, verifica se a célula foi alterada e7 ou e8. Se fosse, coloca a fórmula

=if(e7="",e8*765,e7*960)

na célula A4. Se você colocar um valor na célula A4, ele permanecerá até que você altere novamente e7 ou e8. Talvez seja necessário ajustar para fazer exatamente o que você quer, mas a ideia está lá.

Isto iria no objeto de planilha sob objetos microsoft excel em vba.

EDITAR:

Para se encaixar nos comentários.

Novo código, este só fará algo se a célula tiver um valor adicionado ou alterado, ele não será executado se você excluir um valor.

Em seguida, verifica se e7 foi editado. Se foi e8 é excluído. Se não foi, nós sabemos que o e8 foi editado para que o e7 seja deletado. A fórmula permanece a mesma.

Private Sub Worksheet_Change(ByVal target As Range)

    If Intersect(target, Range("e7:e8")) Is Nothing Or target.Value = "" Then Exit Sub
        Application.EnableEvents = False

        ActiveSheet.Range("A4").Formula = "=if(e7="""",e8*765,e7*960)"

        If Intersect(target, Range("e7")) Is Nothing Then
           ActiveSheet.Range("e7").ClearContents
        Else
            ActiveSheet.Range("e8").ClearContents
        End If

    Application.EnableEvents = True

End Sub
    
por 18.09.2014 / 23:24
1

Nos negócios, é comum querer usar uma fórmula para calcular um valor, mas ainda permitir que o usuário substitua essa fórmula para casos especiais.

Digamos que A4 represente Custo total e contenha:

=D8*G8

em que D8 é o custo unitário e G8 é a quantidade.

Mas, para clientes especiais, queremos poder cotar um desconto. Colocamos o custo descontado em H8 e modificamos a fórmula assim:

=IF(H8<>"",H8,F8*G8)

Então, se quisermos a substituição, ela entra em H8; caso contrário, deixaremos H8 em branco.

    
por 18.09.2014 / 21:15
0

Você pode usar o VB para alterar qualquer valor durante o estágio de cálculo.

Mas isso significa que a macro alterará o valor em A4 e você precisará adicionar algo para saber que o valor não deve ser atualizado em uma segunda tentativa.

Então, em teoria, é possível, mas é altamente impraticável fazê-lo.

Se você quer ter uma lista suspensa com valores populares, não precisa ir para o VB. O Excel tem essa função incorporada. Você pode fazer isso através de data validation .

    
por 18.09.2014 / 21:19
0

A solução que eu uso onde você tem apenas algumas células que eu quero tanto cálculos e a capacidade de inserir valores para substituir a fórmula ou excluir o que eles entraram e têm a fórmula de trabalho é.

Configure sua planilha como quiser. Então, para a célula que você deseja substituir configuração de uma célula idêntica em uma coluna fora da tela, ou seja, coluna az e cortar e colar o seu ell lá Nessa entrada especial, altere sua fórmula, mas com um if para testar se um valor foi digitado na célula original.

Em seguida, copie esta célula, selecione sua célula original e cole uma imagem especial vinculada.

Agora selecione a imagem e adicione um hyperlink à célula diretamente abaixo dela, use um nome ranbe se você acha que ele pode se mover devido a linhas sendo inseridas.

Agora você deve descobrir que a célula parece estar exibindo um valor da fórmula, quando você clica na célula, o hiperlink pula para a célula e insere o valor, a exibição muda, apaga e o valor da fórmula é exibido.

Considere também adicionar um formato condicional na célula de fórmula que muda se houver um valor na célula exibida, isso ajuda a lembrar que um valor manual foi inserido.

Espero que ajude os formulários de configuração que parecem simples e funcionem sem macros.

Terry

    
por 11.06.2016 / 09:38