【发布时间】:2021-12-14 21:20:04
【问题描述】:
我正在尝试计算包含任何字母“j”、“a”、“d”、“e”的单词总数。
例如,如果这个词是“夹克”,那么它将被计算在内。整个宏遍历 A 列和第 3 行到第 373659 行中的单词列表。
Dim count As Long
Dim word As String
Dim row As Long
count = 0
For row = 3 To 373659
word = Cells(row, 1).Value
If InStr(word, "j") Or InStr(word, "a") Or InStr(word, "d") Or InStr(word, "e") Then
count = count + 1
End If
Next row
这段代码正确吗?可以改进吗?
【问题讨论】:
-
请注意,这条
Ors 链目前有效,因为它只涉及Ors。如果您决定使条件更复杂一点,则可能是fall apart。您需要明确地将InStrs 的结果与零进行比较以避免这种情况。 -
我会使用
VBScript.RegExp和.Test方法来测试正则表达式是否存在。 -
如何用空字符串替换每个字母,得到前后的计数并减去两者。或者使用一个案例,以便在找到一个实例后尽早退出:stackoverflow.com/questions/7015471/…