VBA计算不同列中的条目

时间:2018-06-09 13:04:51

标签: vba excel-vba excel

我几乎在任何地方都进行了搜索,找到了一种可以计算不同列中条目数的方法,但我能找到的只是代码,这些代码试图识别是否可以在B列中找到来自A列的值。

我想要一个简单的代码来检查 A列是否具有相同数量的条目,即 B列

例如,如果列A 的条目来自 A1到A10 列B 的条目来自 B1到B5 那么它应该是FALSE,否则如果B列有 B1到B10 的条目,那么结果应为正(TRUE)。

我只需要一个开始,然后我可以根据自己的需要调整代码。任何帮助都必须得到赞赏!

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

2 个答案:

答案 0 :(得分:2)

我要么使用CountA excel公式计算非空单元格的数量,要么在VBA中使用类似的Worksheet函数。见下面的代码

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

答案 1 :(得分:1)

试试这个:

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

enter image description here

注意:

  • 如果值是数字或文本或 Nulls 或错误,则无关紧要。

  • 有关获取工作表公式以在 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

将返回 True ,但是:

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

将返回 False ,因为 True 不等于 7

对于我们的任务,我们可以使用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