注意:此问题适用于我之前的帖子here。
这是我的问题的背景。我在一个文件夹中有多个相同格式的测试文件。我需要计算" YES"的具体数量。在每本工作簿的一栏中。从我之前的问题,我能够获得遍历每个文件的宏,计算" YES",并将计数器放在主工作簿中。以下宏显示了此代码:
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
现在我遇到的问题是添加一个计算" YES"只要有一个字符串"警告"毗邻它。请参考以下某个测试文件的快照:
以下是主工作簿(CountResults.xlsm)的快照:
我的想法是创造一个' If'检查单元格是否包含"警告"如果是这样,继续计算YES列。作为旁注,我不能创建一个只看到列是否有字符串的宏,因为该列可能有多个字符串。它需要指定"警告"或"警告*" (如果有详细信息)。
答案 0 :(得分:2)
getYesCount = Application.CountIfs(.Range("D:D"), "YES", _
.Range("B:B"), "Warning*")