Вы задаете пару разных вопросов в своем вопросе и названии.
Нижняя строка в столбце A:
numRow= wb.Worksheets(1).Cells(wb.Worksheets(1).Rows.Count,1).End(-4162).Row
print(numRow)
Начинается в самом низу столбца AПервый лист, затем использует End(xlUp)
, чтобы найти первую последнюю непустую запись.Проблемы: вернет 1
, если КАЖДАЯ строка содержит данные, 65536 строк в файле .xls или 1048576 строк в файле .xlsx или .xlsm
Непустые ячейкив столбце A:
numRow = xl.WorksheetFunction.CountA(wb.Sheets(1).Columns(1))
print(numRow)
Использует функцию Excel COUNTA
для подсчета непустых ячеек в первом столбце первого рабочего листа
Непустое Строка , независимо от того, какой столбец непустой:
numRow = 0
For RangeArea In Union(wb.Sheets(1).UsedRange.SpecialCells(xlCellTypeConstants, 23), wb.Sheets(1).UsedRange.SpecialCells(xlCellTypeFormulas, 23)).EntireRow.Areas:
numRow = numRow + RangeArea.Rows.Count
print(numRow)
Сначала находит все ячейки со значениями и все ячейки с формулой, затем получаетстроки, в которых они находятся.
Если есть какие-либо пустые строки, то это создает диапазон нескольких областей, поэтому нам нужно сложить количество строк в каждой области, чтобы получить общее количество непустых строк вРабочий лист.