Нахождение количества непустых столбцов в листе Excel с использованием VBA - PullRequest
22 голосов
/ 01 августа 2011

Как узнать количество используемых столбцов в листе Excel с помощью VBA?

Dim lastRow As Long
lastRow = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
MsgBox lastRow

Используя вышеуказанный VBA, я могу найти количество строк.Но как мне найти количество столбцов в моем файле Excel?

Ответы [ 5 ]

39 голосов
/ 01 августа 2011

Ваш пример кода получает номер строки последней непустой ячейки в текущем столбце и может быть переписан следующим образом:

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.

8 голосов
/ 01 августа 2011

Ответ Жан-Франсуа Корбетта идеален.Чтобы быть исчерпывающим, я просто хотел бы добавить, что с некоторыми ограничениями вы также можете использовать UsedRange.Columns.Count или UsedRange.Rows.Count.
Проблема заключается в том, что UsedRange не всегда обновляется при удалении строк / столбцов (впо крайней мере, пока вы не откроете рабочую книгу).

2 голосов
/ 04 августа 2017

Это ответ:

numCols = objSheet.UsedRange.Columns.count

Документация свойства UsedRange

2 голосов
/ 20 декабря 2013

Возможно, вы забыли sheet1 каждый раз где-то перед columns.count, или он будет считать столбцы activesheet, а не sheet1.

Кроме того, не так либыть xltoleft вместо xltoright?(Хорошо, здесь очень поздно, но я думаю, что знаю свое право слева) Я проверил это, вы должны написать xltoleft.

lastColumn = Sheet1.Cells(1, sheet1.Columns.Count).End(xlToleft).Column
0 голосов
/ 10 октября 2016

Результат отображается в следующем коде как номер столбца (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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...