使用VBA查找Excel工作表中非空白列的数量
如何使用VBA查找Excel工作表中使用的列的数量?
Dim lastRow As Long lastRow = Sheet1.Range("A" & Rows.Count).End(xlUp).Row MsgBox lastRow
使用上面的VBA,我可以find行数。 但是,如何find我给定的excel文件中的列数?
您的示例代码获取当前列中最后一个非空白单元格的行号,并且可以按如下方式进行重写:
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
属性。
让 – 弗朗索瓦·科贝特的答案是完美的。 为了穷举,我只想添加一些限制,你也可以使用UsedRange.Columns.Count
或UsedRange.Rows.Count
。
问题是在删除行/列时(至less在您重新打开工作簿之前),UsedRange并不总是被更新。
这是答案:
numCols = objSheet.UsedRange.Columns.count
UsedRange属性的文档
你可能会在activesheet
之前的某个地方忘记sheet1
,或者它会计数activesheet
列而不是sheet1
的列。
另外,不应该是xltoleft而不是xltoright? (好吧,这里很晚,但我想我知道我的权利从左)我检查了,你必须写xltoleft。
lastColumn = Sheet1.Cells(1, sheet1.Columns.Count).End(xlToleft).Column
结果在下面的代码中显示为列号 (8,9等):
Dim lastColumn As Long lastColumn = Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column MsgBox lastColumn
结果在下面的代码中显示为字母 (H,I等):
Dim lastColumn As Long lastColumn = Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column MsgBox Split(Sheet1.Cells(1, lastColumn).Address, "$")(1)