Flatten Excel Formula (2007)

3

Digamos que a célula A1 tenha a fórmula A2 + A3

e B1 tem a fórmula B2 + B2

e C1 tem a fórmula A1 + B1

Eu preciso de uma maneira fácil e rápida de criar a fórmula para C1 no estado nivelado.

i.e. (A2 + A3) + (B1 + B2)

Embora o exemplo acima seja trivial, estou tentando simplificar uma fórmula que se refere a cerca de 40 células (e cerca de 70 chamadas por meio de um plug-in de terceiros).

Qualquer ajuda apreciada!

    
por sjhuk 24.10.2013 / 01:49

2 respostas

0

Se tudo o que você precisa é ver a fórmula na célula C1, tente isso:

= CONCATENATE("= (";SUBSTITUTE(FORMULATEXT(A1);"=";"");") + (";SUBSTITUTE(FORMULATEXT(B1);"=";"");")

Ele funciona em Excel-2013 , mas não consegui testar em Excel-2007 .

Se você precisar executar essa fórmula, convém verificar essa resposta sobre como converter essa string em uma fórmula real:

link

    
por 24.10.2013 / 11:58
0

Se você não tiver o Excel 2013, poderá falsificar a função FORMULATEXT com uma função curta no Visual Basic. Eu usei a pergunta que douglaslps referenciou para retorná-lo como um valor em vez de apenas a string. (Resposta muito clara, essa). Na célula C1, você usaria a fórmula:

=CombineFormulas(A1:B1,"+")

e você colocaria essa função nos módulos da pasta de trabalho em algum lugar:

Option Explicit
Public Function CombineFormulas(RangeToCombine As Range, Operator As String)
    'Input:  Range of cells and an operator to use when combining their formulas
    'Output: String of the combined formulas
    Dim cell As Range
    Dim s As String
    s = "="
    For Each cell In RangeToCombine.Cells
        If Len(s) > 1 Then s = s & Operator
        s = s & "(" & Mid(cell.Formula, 2, Len(cell.Formula)) & ")"
    Next
    Application.Volatile
    CombineFormulas = Evaluate(s)
End Function
    
por 25.07.2014 / 15:42