【发布时间】:2016-12-12 03:55:31
【问题描述】:
我正在尝试在 VBA 中编写一个函数,该函数将计算包含特定范围内某些字母的单元格。到目前为止我的代码是
Function letters(list As range) As Double
Dim limit As Integer
limit = UBound(list.Value)
Dim total As Double
total = 0
Dim i As Integer
For i = 1 To limit
If range(list).Offset(i, 2) = "PD" Then
total = total + 1
End If
Next i
letters = total
End Function
所以我的输入是 =letters(A1:B6),假设 B2、B3 和 B5 有文本“PD”。我希望我的答案是 3,但我得到了 #value!错误。我哪里错了?
提前致谢。
【问题讨论】:
-
一些建议,
limit = list.Rows.Count,if list(i, 2) = "PD" Then。 list(i, 2) 将遍历第二列每一行中的单元格,如果那是你想要的 -
非常简单的解决方案。
WorksheetFunction.CountIf(Range("A1:A25"), "PD") -
更容易的是直接在工作表中使用 COUNTIF。无需编写自定义函数。我觉得 OP 想要匹配单元格内容中任何位置的文本
-
nightcrawler23 @barney 你的回答很有道理。我想对我来说接下来的事情是我想知道为什么我会得到#value!错误。我想知道我的代码行是什么给了我错误,以便我进一步了解数据类型等。
-
旁注:如果
Double变量只处理整数,则不要使用它。您可以改用Integer。