Поиск количества непустых столбцов в листе Excel с использованием VBA
Как найти количество используемых столбцов в листе Excel с помощью VBA?
Dim lastRow As Long
lastRow = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
MsgBox lastRow
Используя вышеуказанный VBA, я могу найти количество строк. Но как мне найти количество столбцов в моем файле excel?
Ответы
Ответ 1
Ваш примерный код получает номер строки последней непустой ячейки в текущем столбце и может быть переписан следующим образом:
Dim lastRow As Long
lastRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
MsgBox lastRow
Затем легко увидеть, что эквивалентный код для получения номера столбца последней непустой ячейки в текущей строке:
Dim lastColumn As Long
lastColumn = Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column
MsgBox lastColumn
Это также может быть полезно для вас:
With Sheet1.UsedRange
MsgBox .Rows.Count & " rows and " & .Columns.Count & " columns"
End With
но имейте в виду, что если столбец A и/или строка 1 пусты, то это не даст того же результата, что и другие примеры выше. Подробнее читайте в UsedRange
.
Ответ 2
Ответ Jean-François Corbett идеален. Чтобы быть исчерпывающим, я хотел бы добавить, что с некоторыми ограничителями вы также можете использовать UsedRange.Columns.Count
или UsedRange.Rows.Count
.
Проблема в том, что UsedRange не всегда обновляется при удалении строк/столбцов (по крайней мере, пока вы не откроете книгу).
Ответ 3
Это ответ:
numCols = objSheet.UsedRange.Columns.count
Документация свойства UsedRange
Ответ 4
Возможно, вы забыли sheet1
каждый раз где-то перед columns.count
, или он будет считать столбцы activesheet
, а не sheet1
.
Кроме того, не должно быть xltoleft вместо xltoright? (Хорошо, очень поздно здесь, но я думаю, что я знаю свое право слева) Я проверил его, вы должны написать xltoleft.
lastColumn = Sheet1.Cells(1, sheet1.Columns.Count).End(xlToleft).Column
Ответ 5
Результат показан в следующем коде как номер столбца (8,9 и т.д.):
Dim lastColumn As Long
lastColumn = Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column
MsgBox lastColumn
Результат показан в следующем коде как буква (H, я и т.д.):
Dim lastColumn As Long
lastColumn = Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column
MsgBox Split(Sheet1.Cells(1, lastColumn).Address, "$")(1)