实际上,Excel内置了ISFORMULA()
函数。
假设A1
单元格有一个公式,您想要检查它。在B1
中,您可以使用以下公式:
=If(ISFORMULA(A1),"HasFormula","PlainValue")
编辑:根据您的评论,您没有ISFORMULA()
。一种替代方法是创建一个快速UDF,并在工作表中使用自定义函数。
在工作簿模块中,输入以下代码:
Function isFormula(ByVal target As Range) As Boolean
isFormula = target.hasFormula
End Function
然后你可以像这样调用它:=isFormula(A1)
,如果A1
有一个公式,它将返回TRUE
。
如果您无法使用VBA,则可以使用此公式:=IF(ISERROR(FORMULATEXT(A1)),"PlainText","HasFormula")
ISFORMULA
)是在Excel 2013中引入的,FORMULATEXT
也是如此。 - user4039065Formulatext
是2013年的。...好吧。我想Scott之前发布了一个公式的答案(如果OP不能使用VBA),但他删除了它,也许他也用了 formulatext
,我记不清了。谢谢你指出这一点! - BruceWayneFORMULATEXT()
函数。 - jayhttps://learn.microsoft.com/en-us/office/vba/api/excel.range.hasformula
编辑:
以上链接中的文本和代码:
"如果范围内所有单元格都包含公式,则为True;如果范围内没有单元格包含公式,则为False;否则为空。只读变体。..."
Worksheets("Sheet1").Activate
Set rr = Application.InputBox( _
prompt:="Select a range on this worksheet", _
Type:=8)
If rr.HasFormula = True Then
MsgBox "Every cell in the selection contains a formula"
End If
=GET.CELL(48,OFFSET(INDIRECT("RC",FALSE),0,-1))
然后在B列使用公式=CellToLeftHasFormula,如果有公式,则会返回TRUE。
请注意,这将意味着您的Excel现在将包含宏,因此需要保存为xlsm格式。我在Excel 2010中使用此功能。
有关完整解释(以及除48之外的其他.CELL选项),请参见MrExcel链接:https://www.mrexcel.com/forum/excel-questions/20611-info-only-get-cell-arguments.html
您可以通过保护A列来限制用户。
您可以使用快捷键Ctrl + `直接检查单元格是否包含公式。
您可以使用VBA编写自定义函数: 1. 按下alt + F11 2. 在工作簿中插入模块 3. 粘贴此代码
Function IsFormula(cell_ref As Range)
IsFormula = cell_ref.HasFormula
End Function
4. 现在,您可以在任何需要的单元格中使用 Isformula 函数。
Ctrl
+`?这是 Ctrl 键和“反引号”(小写波浪线)一起按的组合键。 - user4039065