我有vba代码,我需要满足特定字符串模式的单元格数。例如:
Sub WBR()
Dim wf As WorksheetFunction
Set wf = Application.WorksheetFunction
Dim MinDate As String
Dim MaxDate As String
MinDate = InputBox("Minimum Date")
MaxDate = InputBox("Maximum Date")
If Not (IsDate(MinDate) And IsDate(MaxDate)) Then
MsgBox "You should have specified valid dates!"
Exit Sub
End If
If CDate(MinDate) > CDate(MaxDate) Then
MsgBox "You should have specified sensible dates!"
Exit Sub
End If
With ActiveWorkbook.Worksheets("Latency")
[AE4] = wf.CountIf(.Range("O:O"), "Pass")
[AE5] = wf.CountIf(.Range("O:O"), "Fail")
[AE2] = wf.CountIfs(.Range("K:K"), ">=" & CLng(CDate(MinDate)), _
.Range("K:K"), "<=" & (CLng(CDate(MaxDate)) + 1), _
.Range("O:O"), "Pass")
End With
With ActiveWorkbook.Worksheets("TT")
[AE43] = wf.CountIfs(.Range("I:I"), "<>Duplicate TT", _
.Range("G:G"), "<>Not Tested", _
.Range("U:U"), "Item")
End With
With ActiveWorkbook.Worksheets("TT")
[AE44] = wf.CountIfs(.Range("G:G"), "Not Tested")
End With
此代码搜索特定文本,如果满足则给出指定单元格中的计数。
我需要为30多个单元格实现相同的代码。
那么如何创建一个哈希并在此处传递“关键字”作为参数,如果满足该条件,则应该在单元格中更新计数。
答案 0 :(得分:0)
我正在努力完全理解你的代码正在做什么,但你可以做一个临时的&#34;哈希&#34;通过基本上有一个带有一些分隔符的大字符串,然后在最后分割这些分隔符...
YourHash="Key_1:Value_1->Key_2:Value_2->Key_3:Value_3"
Split_1 = Split(YourHash,"->")
For i = 0 to UBound(Split_1)
Split_2 = Split(Split_1(i),":")
DesiredKey = Split_2(0)
DesiredValue = Split_2(1)
Next
这样的事可能对你有用,但我可能无法完全理解你的需要。
答案 1 :(得分:0)
我想知道你为什么要在VBA开始这样做。为什么不将您在VBA代码中使用的工作表函数作为正常函数放在要放置结果的单元格中,并使用两个单元格作为开始日期和结束日期?