VBA の列を数える
この記事では、Excel で VBA を使用してデータを含む列を簡単にカウントする 2つの方法について説明します。
VBA の列を数える
数列の小さなデータテーブルがある場合、それらを簡単に数えることができますが、大きなデータテーブルがエラーなしですべての列を数えるのは非常に困難です。また、一部の列にはデータが含まれている場合がありますが、一部の列は完全に空白になっている場合があります。
したがって、大きなデータテーブルの場合、データを含むすべての列をカウントすることは非常に困難です。それでは、使用するサンプルデータを含むシートを作成しましょう。
次のデータテーブルに 3つの列が表示されます。1つの Excel ワークシートで使用される列の数を制御するために、VBA コードを使用します。
まず、ALT + F11キーを押して VBA エディターを開きます。その後、挿入>モジュール
から新しいモジュールを作成します。
次に、新しいサブ usedColumns()
を作成します。新しいサブ内では、with
ループを使用して、メソッド UsedRange
を使用して使用範囲を取得します。
その後、columns
の count メソッドを使用して、使用された列の数を出力します。
サンプルコード:
# VBA
Sub usedColumns()
With Sheet1.UsedRange
MsgBox "The Used Columns are: "& .Columns.Count
End With
End Sub
マクロを保存し、F5を押すか、実行をクリックして実行します。マクロ
ダイアログボックスが次のように表示されます。
出力:
VBA の範囲内の列をカウント
次の VBA コードは、指定された範囲のデータを持つすべての列をカウントします。
新しいサブ ColumnsInRange()
を作成しましょう。このサブ内では、範囲関数を使用して、その範囲内の列の数を選択してカウントします。
サンプルコード:
# 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
メソッドを使用して、その範囲で使用される最後の列を取得できます。
新しいサブ findLastColumn()
を作成し、そのサブ内で、範囲の 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
出力: