모든 수식 참조가 동일한 시트에있는 간단한 상황에서 작동해야합니다. 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
을 사용하십시오.
[regex] R1C1 셀은 [Range.FormulaR1C1 속성] (https://msdn.microsoft.com/en-us/library/bb213527.aspx)에서 주소를 지정합니다. – Jeeped