Excel VBA:在执行任务之前,检查另一个工作簿中的单元是否包含string

注:这个问题的作品,我以前的post在这里 。

这是我的问题的背景。 我在一个文件夹中有多个相同格式的testing文件。 我需要计算每个工作簿中列的“是”的具体数量。 从我以前的问题中,我能够获得遍历每个文件的macros,计数“是”,并将计数器放在主工作簿中。 以下macros显示此代码:

Private Sub CommandButton1_Click() Dim r As Range With Worksheets("Sheet1") For Each r In .Range("A2", .Range("A" & .Rows.Count).End(xlUp)) r.Offset(0, 1).Value = getYesCount(r.Value) Next End With End Sub Function getYesCount(WorkBookName As String) As Long Const FolderPath As String = "C:\Users\khanr1\Desktop\CodeUpdateTest\" If Len(Dir(FolderPath & WorkBookName)) Then With Workbooks.Open(FolderPath & WorkBookName) With .Worksheets("Sheet2") getYesCount = Application.CountIf(.Range("D:D"), "YES") End With .Close False End With Else Debug.Print FolderPath & WorkBookName; ": Not Found" End If End Function 

现在我遇到的问题是添加一个function,如果在它旁边有一个string“警告”,则只计算“是”。 请参考以下其中一个testing文件的快照:

警告快照

以下是Master Workbook(CountResults.xlsm)的快照:

在这里输入图像说明

我的想法是创build一个“If”函数,检查单元是否包含“警告”,如果是,则继续计算YES列。 作为一个方面说明,我不能让一个macros只是看看列是否有一个string,因为列可能有多个string。 它需要指定“警告”或“警告*”(如果后面有详细信息)。

  getYesCount = Application.CountIfs(.Range("D:D"), "YES", _ .Range("B:B"), "Warning*")