Excel公式 - 检查单元格是否具有公式

时间:2017-03-15 18:31:44

标签: excel excel-formula excel-2010

您使用什么公式来检查另一个细胞是否有配方?例如,我有2列,A包含包含公式或值的单元格。

(A栏通常包含公式,但其他用户尝试通过直接输入和替换以前的公式来更改其值)

在B栏中我想添加一个公式,如果A栏上的单元格有公式,则说“HasFormula”,如果它包含值,则说“PlainValue”。

我在考虑使用=ISNUMBER(),但这可能不准确。

我正在使用Excel 2010。

4 个答案:

答案 0 :(得分:6)

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)如果TRUE有公式,它会返回A1

如果您无法使用VBA,则可以使用以下公式: =IF(ISERROR(FORMULATEXT(A1)),"PlainText","HasFormula")

答案 1 :(得分:1)

MrExcel网站(下面的链接)有这种方法,它使用Excel 4中的旧代码(为了向后兼容仍然存在)......

定义名称,例如" CellToLeftHasFormula"并且在"中指的是"框放

=GET.CELL(48,OFFSET(INDIRECT("RC",FALSE),0,-1))

然后在B列中使用公式= CellToLeftHasFormula,如果有,则返回TRUE。

请注意,这将意味着您的Excel现在将包含一个宏,因此需要保存(xlsm)。我在Excel 2010中使用它。

如需完整说明(以及其他.CELL选项,除48之外),请参阅MrExcel链接:Using Vim's named registers

答案 2 :(得分:1)

您可以使用Range.HasFormula属性。

https://docs.microsoft.com/en-us/office/vba/api/excel.range.hasformula

编辑:

上面链接中的文本和代码:

“如果范围中的所有单元格都包含公式,则为true;如果范围中的所有单元格均不包含公式,则为false;否则为null。只读Variant。...”

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

答案 3 :(得分:0)

您可以通过保护列A来限制用户。

您可以使用快捷键 Ctrl +`直接检查单元格是否包含公式。

您可以使用vba并编写用户定义的函数: 1.按alt + F11 2.在工作簿中插入模块 3.粘贴此代码

Function IsFormula(cell_ref As Range) 
IsFormula = cell_ref.HasFormula 
End Function

4。现在,在任何地方使用Isformula。