.png)
Gostaria de adicionar os componentes de uma fórmula em um intervalo. Temos uma seção que mostra os fluxos de caixa líquidos para itens específicos e vários itens específicos.
Por exemplo, =8+9-5
mostra "12" em várias células. Se os valores não fossem compensados no nível da célula, seria fácil usar uma SUMIF
fórmula para adicionar apenas as células positivas e negativas, mas como ela é compensada no nível da célula, estou tentando me aprofundar nos valores subjacentes e usar o equivalente à SUMIF
fórmula, mas para todos os componentes subjacentes.
Para o exemplo acima, estou tentando fazer com que uma célula de resumo do intervalo diga "+17" e uma célula mostre "-5".
Como posso fazer isso?
Responder1
A questão principal é como acessar a sequência de fórmulas de outra célula da planilha. Não existe nenhuma função de planilha que possa fazer isso. Então, você terá que fazer uma de duas coisas para começar: 1) usar localizar e substituir para alterar o conteúdo das células para que elas não contenham mais fórmulas, mas sim strings, ou 2) usar VBA para acesse a sequência de fórmulas das células.
(1) pode ser feito selecionando as células que deseja manipular e pressionando Ctrl+ Hpara abrir a caixa de diálogo Substituir. Pesquise =
(supondo que as únicas fórmulas nas quais você está interessado sejam como o seu exemplo e não incluam sinais de igual subsequentes) e substitua por nada. Isso mudará uma célula com fórmula =8+9-5
mostrando o valor 12 para uma célula mostrando a string 8+9-5
.
(2) pode ser realizado acessando a propriedade da célula .Formula
. Por exemplo, para obter a fórmula da célula A1, você usaria uma UDF simples, mais ou menos assim:
Public Function GetFormula(r as Range) as String
GetFormula = r.Formula
End Function
Depois de ter essas strings, por qualquer método, você terá que ser esperto com as funções de manipulação de strings, por exemplo, FIND
, LEN
, e VALUE
, para extrair os valores desejados. Como fazer isso seria uma perda de tempo tanto para você quanto para mim, vou me abster de fazer isso aqui.
Responder2
Adicione uma planilha à sua pasta de trabalho; vamos chamá-lo de "Configuração".
Em A1 coloque 8
, em A2 coloque 9
, em A3 coloque -5
. Copie tantas colunas quanto a fórmula com constantes existir nas colunas da sua planilha original. (Dependendo de como o intervalo está organizado, você pode precisar que a planilha de configuração use A1, B1, C1 e copie. A ideia é criar um intervalo que corresponda ao formato do intervalo na planilha original.)
Na planilha original, substitua todas as fórmulas =8+9-5
por =Setup!A1+Setup!A2+Setup!A3
. Isto pode ser feito com uma operação Find&Replace que avalia as fórmulas.
Agora você pode criar fórmulas condicionais na planilha Configuração em vez dos valores codificados na planilha original.
=sumif(Setup!A1:A3,">0")
=sumif(Setup!A1:A3,"<0")