Excel VBA 2021で、テーブル名「売上ABC」のC列の数値が特定の範囲(10~1000)に該当する行を非表示にするコードを作成する方法を解説します。この操作を行いたい場合、5000行以上のデータがある状況でも効率的に処理できる方法をご紹介します。
1. VBAコードの基本的な構成
まず、Excel VBAを使用してC列の数値が10~1000の行を非表示にするためには、以下の手順でコードを組み立てる必要があります。非表示にしたい行の条件を指定し、その行を非表示にする処理を記述します。
以下は基本的なVBAコードの一例です。
VBAコード例:
Sub HideRowsBasedOnValue()
Dim tbl As ListObject
Dim cell As Range
Set tbl = ActiveSheet.ListObjects("売上ABC")
For Each cell In tbl.ListColumns("C").DataBodyRange
If IsNumeric(cell.Value) And cell.Value >= 10 And cell.Value <= 1000 Then
cell.EntireRow.Hidden = True
End If
Next cell
End Sub
このコードでは、「売上ABC」という名前のテーブル内で、C列の値が10以上1000以下の行を非表示にします。範囲を変更したい場合は、条件(ここでは10~1000)を調整することで対応できます。
2. 処理の高速化
5000行以上のデータがある場合、処理に時間がかかることがあります。VBAの実行速度を向上させるためには、以下の設定を追加することが有効です。
高速化のための追加コード:
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
' 処理
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
この設定は、画面の更新を停止し、計算を手動に切り替えることで、VBAコードの実行速度を向上させる効果があります。処理終了後には、元に戻すコードを忘れずに追加しましょう。
3. 空白セルや無効なデータへの対応
VBAコードを実行する際、C列に空白セルが含まれている場合があります。この場合、空白セルに対して何らかの処理を行いたい場合は、「IsEmpty」関数や「IsNumeric」関数を組み合わせて、空白セルをスキップするように調整できます。
例えば、以下のように修正することで、空白セルを無視して非表示処理を実行できます。
修正コード例:
If Not IsEmpty(cell.Value) And IsNumeric(cell.Value) And cell.Value >= 10 And cell.Value <= 1000 Then
cell.EntireRow.Hidden = True
4. 使いやすいボタンの追加
VBAコードをボタンで簡単に実行できるようにするには、シートにボタンを追加して、そのボタンにマクロを割り当てる方法があります。以下はその手順です。
- 「開発」タブから「挿入」を選択し、「フォームコントロール」のボタンを選択します。
- シート上にボタンを配置します。
- ボタンを右クリックして「マクロの割り当て」を選択し、作成したマクロを選択します。
これで、ボタンをクリックするだけで、指定した範囲の行を非表示にできるようになります。
まとめ
Excel VBAを使用して、特定の範囲に基づいて行を非表示にする方法を紹介しました。VBAコードを使うことで、手動での作業を自動化し、効率的に処理を行うことができます。5000行以上のデータにも対応できるよう、処理の高速化や空白セルの取り扱いにも注意してコードを設計しましょう。ボタンを使って簡単に実行できるようにすることで、さらに便利に活用できます。


コメント