[英]Excel Formula - Check if cell has formula
你用什么公式来检查另一个细胞是否有配方? 例如,我有2列,A包含包含公式或值的单元格。
(A列通常包含公式,但其他用户尝试通过直接键入和替换之前的公式来更改其值)
在列BI中,如果列A上的单元格具有公式,则要添加将显示“HasFormula”的公式,如果它包含值,则表示“PlainValue”。
我想也许使用=ISNUMBER()
但这可能不准确。
我正在使用Excel 2010。
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")
MrExcel网站(下面的链接)有这种方法,它使用Excel 4中的旧代码(为了向后兼容仍然存在)...
定义一个名称,如“CellToLeftHasFormula”和“引用”框中
=GET.CELL(48,OFFSET(INDIRECT("RC",FALSE),0,-1))
然后在B列中使用公式= CellToLeftHasFormula,如果有,则返回TRUE。
请注意,这将意味着您的Excel现在将包含一个宏,因此需要保存(xlsm)。 我在Excel 2010中使用它。
有关完整说明(以及其他.CELL选项,除48之外),请参阅MrExcel链接: https ://www.mrexcel.com/forum/excel-questions/20611-info-only-get-cell-arguments.html
您可以使用Range.HasFormula属性。
https://docs.microsoft.com/en-us/office/vba/api/excel.range.hasformula
编辑:
来自以上链接的文字和代码:
“如果范围中的所有单元格都包含公式,则为true;如果范围中的所有单元格都不包含公式,则为false;否则为null。只读变量....”
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
您可以通过保护列A来限制用户。
您可以使用快捷键Ctrl +`直接检查单元格是否包含公式。
您可以使用vba并编写用户定义的函数:1。按alt + F11 2.在工作簿中插入模块3.粘贴此代码
Function IsFormula(cell_ref As Range)
IsFormula = cell_ref.HasFormula
End Function
4.现在,在任何地方使用Isformula。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.