【发布时间】:2012-01-25 10:44:34
【问题描述】:
我需要编写一个宏来搜索指定的列并对所有包含指定字符串的单元格进行计数,例如"19/12/11" or "Green"然后将这个数字与一个变量相关联,
有人有什么想法吗?
【问题讨论】:
我需要编写一个宏来搜索指定的列并对所有包含指定字符串的单元格进行计数,例如"19/12/11" or "Green"然后将这个数字与一个变量相关联,
有人有什么想法吗?
【问题讨论】:
您的意思是要在 VBA 中使用公式吗?比如:
Dim iVal As Integer
iVal = Application.WorksheetFunction.COUNTIF(Range("A1:A10"),"Green")
应该可以。
【讨论】:
iVal = Application.WorksheetFunction.COUNTIF(Range("A1:A10"),"*Green*")
这不是完全您正在寻找的,但这是我过去处理此问题的方法;
你可以输入一个公式,比如;
=COUNTIF(A1:A10,"Green")
...进入一个单元格。这将计算 A1 和 A10 之间包含文本“绿色”的单元格数。然后,您可以在 VBA 宏中选择此单元格值,并照常将其分配给变量。
【讨论】:
一种方式;
var = count("find me", Range("A1:A100"))
function count(find as string, lookin as range) As Long
dim cell As Range
for each cell in lookin
if (cell.Value = find) then count = count + 1 '//case sens
next
end function
【讨论】:
Find 方法
如果您要匹配非空白值或空单元格并且难以使用通配符,我从here 找到了以下解决方案。
Dim n as Integer
n = Worksheets("Sheet1").Range("A:A").Cells.SpecialCells(xlCellTypeConstants).Count
【讨论】:
不是你问的,但可能还是有用的。
当然,您可以对矩阵公式做同样的事情。 只需读取包含以下内容的单元格的结果:
Cell A1="Text to search"Cells A2:C20=Range to search for
=COUNT(SEARCH(A1;A2:C20;1))
请记住,输入矩阵公式需要 CTRL+SHIFT+ENTER,而不仅仅是 ENTER。 之后,它应该看起来像:
{=COUNT(SEARCH(A1;A2:C20;1))}
【讨论】: