![](/img/trans.png)
[英]VBA on excel - using the result of a vlookup as criteria for a match
[英]Counting cells using Excel VBA which are a result of a vlookup statement
我在一張紙上有一個電子表格,其中C列中的值是使用vlookup語句的結果從我在A列中輸入的值生成的。
在A列中輸入所有值后,我需要能夠計算出C列中最多51行(從第1行到第51行)中具有值(不包括錯誤)的單元格的數量。
哦-順便說一句,每次執行計數時,都會使用不同數量的行。
我試過使用:
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")`
您正在尋找沒有錯誤的單元格。 用以下公式替換您的vlookup。 因此,所有錯誤都將替換為“找不到”文字
=IFERROR(VLOOKUP(C1,A1:B3,2,FALSE), "NOT FOUND")
然后將其相加,以找到非空白且非錯誤的單元格數量
=COUNTA(D:D) - COUNTIF(D:D,"NOT FOUND")
假設: -
A:B信號源范圍
C查找列
D vlookup函數在這個庫中
對於VBA
cnt = Application.WorksheetFunction.CountA(D:D) - Application.WorksheetFunction.Countif(D:D, "NOT FOUND")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.