使用Excel VBA计算单元格,这是vlookup语句的结果

我在一张工作表上有一个电子表格,列C中的值是使用vlookup语句的结果从我在列A中input的值生成的。

我需要能够计算列C中的单元格的数量,最多51行(从第1行到第51行),其中有一个值,不包括错误,我已经input所有我的值在列A 。

哦 – 顺便说一句,每次我记数时,都会有不同数量的行。

我试过使用:

ccc = Range("C:C").Cells.SpecialCells(xlCellTypeConstants).Count 

但是这只是计算我的标题行的第一行。

对不起,如果已经有一个答案,但我一直在寻找一段时间,找不到任何东西。

谢谢。

你可以很容易地做到这一点没有VBA,但你可以尝试:

 sub testy() dim myRange as range dim numRows as long Set myRange = Range("C:C") numRows = Application.WorksheetFunction.CountA(myRange) - _ myRange.SpecialCells(xlCellTypeFormulas, xlErrors).Count end sub 

你的代码不工作,因为xlCellTypeConstants明确地告诉它只计算常量值,忽略公式计算值。

工作表函数CountA只计算具有值的单元格:

 =CountA(C1:C51) 

我们可以使用WorksheetFunction函数从VBA调用任何工作表函数:

 dim c as integer c = WorksheetFunction.CountA([C1:C51]) 

CountIf可以用来跳过错误:

 Skip errors with: `=COUNTIF(D5:D9,">0")` 

您正在计算没有错误的单元格。 用下面的公式replace你的vlookup。 所以所有的错误将被“找不到”文本取代

 =IFERROR(VLOOKUP(C1,A1:B3,2,FALSE), "NOT FOUND") 

然后添加这个查找非空白和非错误的单元格的数量

 =COUNTA(D:D) - COUNTIF(D:D,"NOT FOUND") 

假设: –

答:B源范围

C查找列

D的查找function是在这coulmn

对于VBA

 cnt = Application.WorksheetFunction.CountA(D:D) - Application.WorksheetFunction.Countif(D:D, "NOT FOUND")