【问题标题】:VBA Count cells in column containing specified valueVBA计数包含指定值的列中的单元格
【发布时间】:2012-01-25 10:44:34
【问题描述】:

我需要编写一个宏来搜索指定的列并对所有包含指定字符串的单元格进行计数,例如"19/12/11" or "Green"然后将这个数字与一个变量相关联,

有人有什么想法吗?

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    您的意思是要在 VBA 中使用公式吗?比如:

    Dim iVal As Integer
    iVal = Application.WorksheetFunction.COUNTIF(Range("A1:A10"),"Green")
    

    应该可以。

    【讨论】:

    • 顺便说一下,您可以像这样在搜索字符串中添加通配符:iVal = Application.WorksheetFunction.COUNTIF(Range("A1:A10"),"*Green*")
    【解决方案2】:

    这不是完全您正在寻找的,但这是我过去处理此问题的方法;

    你可以输入一个公式,比如;

    =COUNTIF(A1:A10,"Green")
    

    ...进入一个单元格。这将计算 A1 和 A10 之间包含文本“绿色”的单元格数。然后,您可以在 VBA 宏中选择此单元格值,并照常将其分配给变量。

    【讨论】:

    • 您的回答值得 +1 以提供正确的遵循方式。我希望这会鼓励您继续回答其他问题
    • 很好的答案谢谢你,我可以用不同的方式来解决它
    【解决方案3】:

    一种方式;

    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
    

    【讨论】:

    • 有效 - 但在适当大小的范围内逐个单元测试会非常慢,最好使用 JMax 之类的函数,或使用范围 Find 方法
    • 工作,非常感谢,但如上所述 JMax 的方法似乎对我更有效
    【解决方案4】:

    如果您要匹配非空白值或空单元格并且难以使用通配符,我从here 找到了以下解决方案。

    Dim n as Integer
    n = Worksheets("Sheet1").Range("A:A").Cells.SpecialCells(xlCellTypeConstants).Count
    

    【讨论】:

      【解决方案5】:

      不是你问的,但可能还是有用的。

      当然,您可以对矩阵公式做同样的事情。 只需读取包含以下内容的单元格的结果:

      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))}

      【讨论】:

      • bummi ... 如果有人做出负面评价,告诉他为什么会很酷吗?这样下次我就不会犯同样的错误了吗?我知道我是新手,所以我可能是错的......
      • 我不是投反对票的人,但我的猜测是问题开始于“我需要编写一个宏”并且标题开头有“VBA”,但是你的答案实际上是一个工作表函数。我也觉得看到没有解释的反对票很烦人。
      猜你喜欢
      • 1970-01-01
      • 2014-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-08
      • 2015-03-05
      • 1970-01-01
      • 2019-02-23
      相关资源
      最近更新 更多