Подсчет ячеек с использованием Excel VBA, которые являются результатом оператора vlookup

У меня есть электронная таблица на одном листе со значениями в столбце C, сгенерированными с использованием результатов оператора vlookup из значения, которое я ввожу в столбец A.

Мне нужно иметь возможность подсчитать количество ячеек в столбце C максимум до 51 строки (от строки 1 до строки 51), в которой есть значение, не считая ошибок, после того как я ввел все свои значения в столбце A,

О - кстати, каждый раз, когда я делаю подсчет, будет использоваться различное количество строк.

Я пытался использовать:

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

но это только первая строка, которая является моей строкой заголовка.

Извините, если уже есть ответ, но я долго искал и ничего не могу найти.

Благодарю.

3 ответа

Вы можете легко сделать это без 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)

Мы можем вызвать любую функцию рабочего листа из VBA с помощью функции WorksheetFunction:

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")
Другие вопросы по тегам