2016-09-17 17 views
2

数式のセルを実際の値に置き換えるようにセルベースの数式を変換する方法はありますか?自動完成せずに?Excel - セルベースの数式を実際のセルの値に置き換えます

は、ここでの例ですが、ちょうど式があると言うことができます:

=A1+A2+B6 

そして...

A1=2, A2=5 and B6=21. 

どのように私はこれからの私の式を変えることができます。..

=A1+A2+B6 

...これに...

=2+5+21 

...手動で行うのではありませんか?私は道があると信じています。

ありがとうございます。

+3

[regex] R1C1セルは[Range.FormulaR1C1プロパティ](https://msdn.microsoft.com/en-us/library/bb213527.aspx)からアドレス指定します。 – Jeeped

答えて

0

これは、すべての数式参照が同じシート上にある単純な状況で有効です。私はDirectPrecedentsの範囲を使用しますが、これは同じシート上の先行するセルに制限します。私は私の例では

Sheet1

|      A      | 
--+---------------------------------------------+ 
1 | 2           | 
2 | 4           | 
3 | 6           | 
4 | =Sheet1!A3+(A1^Sheet1!A1)+Sheet1!A2/(A3+A2) | 
5 | =SUM(A1,A2,A3)/COUNT(A1,A2,A3)    | 

で、これは名前のシートの接頭辞を持つセルが含まれるセル参照のミックスを注意してください。

そして私は、このVBAコードを使用します。

Option Explicit 

Sub Test() 
    PrintResolvedFormula Range("A4") 
    PrintResolvedFormula Range("A5") 
End Sub 

Sub PrintResolvedFormula(rng As Range) 

    If rng.HasFormula Then 

    Dim formula As String 
    formula = rng.FormulaR1C1 

    Dim cel As Range 
    For Each cel In rng.DirectPrecedents.Cells 
     formula = Replace(formula, cel.Worksheet.Name & "!", vbNullString) 
     formula = Replace(formula, cel.Address(False, False, xlR1C1, False, rng), cel.Text) 
    Next cel 

    Debug.Print formula 

    Else 

    Debug.Print rng.Value 

    End If 

End Sub 

そして、この出力を得る:値にセル参照を解決しますが、それは値に関数を解決しないで

=6+(2^2)+4/(6+4) 
=SUM(2,4,6)/COUNT(2,4,6) 

注意を。個々の機能を解決するには、ファンクション文字列を分割し、Application.Evaluateを使用します。

関連する問題