Excel VBA:在执行任务之前,检查其他工作簿中的单元格是否包含字符串
注意:这个问题与我上一篇文章完全相同 这是我的问题的背景。我在一个文件夹中有多个相同格式的测试文件。我需要在每本工作手册的一列中计算“是”的具体数量。从上一个问题中,我能够获得一个遍历每个文件的宏,计算“是”,并将计数器放入主工作簿中。以下宏显示此代码:Excel VBA:在执行任务之前,检查其他工作簿中的单元格是否包含字符串,vba,excel,macros,Vba,Excel,Macros,注意:这个问题与我上一篇文章完全相同 这是我的问题的背景。我在一个文件夹中有多个相同格式的测试文件。我需要在每本工作手册的一列中计算“是”的具体数量。从上一个问题中,我能够获得一个遍历每个文件的宏,计算“是”,并将计数器放入主工作簿中。以下宏显示此代码: Private Sub CommandButton1_Click() Dim r As Range With Worksheets("Sheet1") For Each r In .Rang
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
现在我的问题是添加一个功能,仅当其旁边有一个字符串“Warning”时才计算“YES”。请参阅其中一个测试文件的以下快照:
以下是主工作簿(CountResults.xlsm)的快照:
我的想法是创建一个“If”函数,检查单元格是否包含“Warning”,如果是,则继续计算YES列。作为旁注,我不能制作一个宏来只查看列是否有字符串,因为该列可能有多个字符串。它需要指定“警告”或“警告*”(如果后面有详细信息)
getYesCount = Application.CountIfs(.Range("D:D"), "YES", _
.Range("B:B"), "Warning*")