在 VBA 中计算列数
本文将讨论在 Excel 中使用 VBA 轻松计算包含数据的列的两种方法。
在 VBA 中计算列数
当我们有一个包含几列的小数据表时,我们可以很容易地统计它们,但是对于一个大数据表来说,要统计所有列而没有任何错误是相当困难的。除此之外,某些列可能包含数据,而某些列可能完全空白。
因此,在大数据表的情况下计算所有列的数据是非常困难的。现在,让我们创建一个包含一些示例数据的工作表。
我们可以在下面的数据表中看到三列。为了控制单个 Excel 工作表中使用的列数,我们将使用 VBA 代码。
首先,我们通过按 ALT + F11 键打开 VBA 编辑器。之后,从 Insert > Module
创建一个新模块。
然后,创建一个新的 sub,usedColumns()
。在我们的新 sub 中,我们将使用 with
循环使用 UsedRange
方法获取已使用的范围。
之后,我们使用 columns
的 count 方法来输出使用的列数。
示例代码:
# VBA
Sub usedColumns()
With Sheet1.UsedRange
MsgBox "The Used Columns are: "& .Columns.Count
End With
End Sub
保存宏并通过按F5或单击运行来运行它。Macro
对话框将如下所示。
输出:
在 VBA 中计算范围内的列
以下 VBA 代码计算给定范围内具有数据的所有列。
让我们创建一个新的子 ColumnsInRange()
。在这个 sub 中,我们将使用 range 函数来选择和计算该范围内的列数。
示例代码:
# VBA
Sub ColumnsInRange()
Dim newRange As Worksheet
Set newRange = Worksheets("Sheet1")
MsgBox "The Used Columns are: " & newRange.Range("A15:D15").Columns.Count
End Sub
输出:
在 VBA 中使用 Range().End
方法
我们可以使用 Range().End
方法来获取该范围内使用的最后一列。
创建一个新的 sub,findLastColumn()
,在该 sub 内,我们将使用 range 的 End
方法来查找工作表右侧使用的最后一列。
# VBA
Sub findLastColumn()
Dim newRange As Integer
newRange = Range("A2").End(xlToRight).Column
MsgBox newRange
End Sub
输出:
我们在弹出的对话框中获取最后一列的编号,如上图所示。
在 VBA 中使用 Cells.Find()
方法
我们还可以使用 Range.Find
方法使用 VBA 代码从工作表中获取最后使用的列。
检查以下代码。在 LastColumnByFind()
子程序中,我们使用 Cells.Find()
方法来查找最后使用的列。
示例代码:
# VBA
Sub LastColumnByFind()
Dim newRange As Long
newRange = Cells.Find(What:="*", _
After:=Range("A1"), _
LookAt:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Column
MsgBox "Last Used Column Number by Find Method: " & newRange
End Sub
输出: