2016-09-17 222 views
2

有沒有辦法將基於單元格的公式轉換爲公式中的單元格替換爲其實際值?沒有自動完成?Excel - 將基於單元格的公式替換爲實際單元格值

下面是一個例子,讓我們只說其公式爲:

=A1+A2+B6 

而且......

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

我怎樣才能把我的公式從這個..

=A1+A2+B6 

...對此...

=2+5+21 

...沒有手動做?我相信有一種方法。

謝謝。

+3

[正則表達式] 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

相關問題