解决方案从excel-vba 到google-spreadsheets-api 会有所不同,但方法相似。在 VBA 中,在检查单元格的Range.HasFormula property 后,可以使用Range.Formula property、Range.FormulaR1C1 property、Range.FormulaLocal property 或Range.FormulaR1C1Local property 返回结果。
以下是用户定义的函数¹(又名 UDF)。实施见脚注。
Function showFormula(rng As Range, _
Optional xlRefStyle As Variant, _
Optional bPFX As Boolean = False, _
Optional bLOC As Boolean = True)
If IsMissing(xlRefStyle) Then
xlRefStyle = Application.ReferenceStyle
ElseIf xlRefStyle <> 1 Then
xlRefStyle = xlR1C1
End If
If rng.Cells(1, 1).HasFormula Then
Select Case xlRefStyle
Case xlA1
If bLOC Then
showFormula = _
Replace(rng.Cells(1, 1).FormulaLocal, Chr(61), IIf(bPFX, Chr(61), vbNullString))
Else
showFormula = _
Replace(rng.Cells(1, 1).Formula, Chr(61), IIf(bPFX, Chr(61), vbNullString))
End If
Case xlR1C1
If bLOC Then
showFormula = _
Replace(rng.Cells(1, 1).FormulaR1C1Local, Chr(61), IIf(bPFX, Chr(61), vbNullString))
Else
showFormula = _
Replace(rng.Cells(1, 1).FormulaR1C1, Chr(61), IIf(bPFX, Chr(61), vbNullString))
End If
End Select
Else
showFormula = vbNullString
End If
End Function
B4 中SUMIFS 公式的示例。
showFormula UDF 语法
在具有德语区域设置(以及 Excel 的 DE-DE 语言版本)的系统上,上述内容将显示为 SUMMEWENNS(B1:B3; A1:A3; "a")。
在 DE-DE 系统中显示公式 UDF 语法
¹ 用户定义函数(又名 UDF)被放入标准模块代码表中。点击Alt+F11,当VBE打开时,立即使用下拉菜单Insert ► Module(Alt+I,M)。将功能代码粘贴到标题为 Book1 - Module1 (Code) 的新模块代码表中。点击 Alt+Q 返回您的工作表。