Excel formula 如何检查整个Excel工作表中公式中的特定文本?

Excel formula 如何检查整个Excel工作表中公式中的特定文本?,excel-formula,contains,sumifs,Excel Formula,Contains,Sumifs,我正在寻找一个公式,它将检查整个工作表中是否有任何公式包含“SUMIF”。如果有,公式应返回“是”,否则返回“否”。尝试以下用户定义的函数: Public Function Zum(rng As Range) As String Dim r2 As Range, r3 As Range Set r2 = rng On Error GoTo out Set r3 = r2.Cells.SpecialCells(xlCellTypeFormulas)

我正在寻找一个公式,它将检查整个工作表中是否有任何公式包含“SUMIF”。如果有,公式应返回“是”,否则返回“否”。

尝试以下用户定义的函数:

Public Function Zum(rng As Range) As String
    Dim r2 As Range, r3 As Range
    Set r2 = rng

    On Error GoTo out
        Set r3 = r2.Cells.SpecialCells(xlCellTypeFormulas)
    On Error Resume Next
    For Each r In r3
        t = r.Formula
        If InStr(t, "SUMIF") > 0 Then
            Zum = "Yes"
            Exit Function
        End If
    Next r
out:
    Zum = "No"
End Function
它基于
范围
,但您可以将范围设置为任何特定工作表上的所有单元格。例如,要测试
Sheet2
,请将这是
Sheet1
中的任意单元格:

=ZUM(Sheet2!1:1048576)

您需要执行以下操作:

  • 选择一个范围并将其命名。这是为了以后可以在公式中使用它
  • 使用带有名称范围的
    COUNTIF
    公式

    =COUNTIF(您的范围,“=suif”)

  • IF
    公式将1或0转换为“是”或“否”

    =IF(COUNTIF(YourRange,“=SUMIF”)=1,“是”、“否”)


  • 对于公式路线,必须限制搜索:

    =IF(SUMPRODUCT(--(ISNUMBER(SEARCH("=SUMIF",FORMULATEXT(Sheet2!A1:Z100))))),"Yes","No")
    

    由于内存不足,尝试填写整张工作表将导致错误。

    Countif不会查看公式,但返回公式,因此不会找到匹配项。