代码之家  ›  专栏  ›  技术社区  ›  alex2002

不同列中的VBA计数项

  •  0
  • alex2002  · 技术社区  · 7 年前

    我几乎在任何地方都能找到一种方法来计算不同列中的条目数量,但我所能找到的是试图识别B列中的值是否可以在B栏中找到的代码。

    我想要一个简单的代码来检查 列A 具有与I.E. B柱 .

    例如,如果 列A 有来自的条目 A1-A10 B柱 有来自的条目 B1-B5 则该值应为false,否则,如果B列包含来自 B1-B10 ,则结果应为正(真)。

    我只需要一个开始,然后我可以调整代码,以满足我的需要。任何帮助都将不胜感激!

    注释 :值不必匹配。代码应该只计算条目数。提前谢谢!

    2 回复  |  直到 6 年前
        1
  •  1
  •   Gary's Student    7 年前

    试试这个:

    =COUNTA(A:A)=COUNTA(B:B)
    

    enter image description here

    注:

    • 值是数字、文本还是 空值 或错误。

    • 关于在中执行工作表公式的一般问题 VBA 考虑:

      Sub DoItInVBA()
      Dim s As String, boo As Boolean
      
      s = "=Counta(A:A)=Counta(B:B)"
      boo = Evaluate(s)
      MsgBox boo
      End Sub
      

    编辑第1页:

    链接布尔表达式时需要小心。例如

    Sub BooTest1()
        Dim boo As Boolean
        a = 7
        b = 7
        boo = (a = b)
        MsgBox boo
    End Sub
    

    将返回 但是:

    Sub BooTest2()
        Dim boo As Boolean
        a = 7
        b = 7
        c = 7
        boo = (a = b = c)
        MsgBox boo
    End Sub
    

    将返回 ,因为 不等于 !

    为了我们的任务,我们可以使用 And() :

    Sub DoItInVBA()
        Dim s As String, boo As Boolean
    
        s = "=And(Counta(A:A)=Counta(B:B),Counta(B:B)=Counta(C:C))"
        boo = Evaluate(s)
        MsgBox boo
    End Sub
    
        2
  •  2
  •   Ivan Borisov    7 年前

    我要么使用counta excel公式计算非空单元格的数目,要么使用vba中类似的工作表函数。参见下面的代码

    Function CompareAtoB() As Boolean
        CompareAtoB = WorksheetFunction.CountA(Range("A:A")) = WorksheetFunction.CountA(Range("B:B"))
    End Function