Excel VBAを使って、指定した条件に一致するセルをテーブルから検索し、その値を利用する方法を紹介します。この手順により、大量のデータを含むテーブルから、特定の条件を満たすデータを効率的に抽出できるようになります。
1. 準備するもの
- テーブル: 検索対象のデータをテーブル形式で用意します。ここでは、Excelのテーブル(ListObject)としてデータを構成します。
- 検索条件: 検索条件はセルや範囲に指定された値を使用します。
2. VBAでの基本的なテーブル検索方法
以下のコードでは、特定の行と列を検索し、その値を取得する方法を解説します。
基本コード
以下は、Excelシート内のテーブルで指定した行と列から値を取得するサンプルコードです。
Sub SearchTableValue()
Dim tableName As String
Dim rowNum As Variant
Dim colNum As Variant
Dim resultValue As Variant
Dim tableRange As ListObject
Dim rowDataRange As Range
Dim headerRange As Range
' テーブル名の設定("MyTable" などに変更してください)
tableName = "MyTable"
Set tableRange = ThisWorkbook.Sheets("Sheet1").ListObjects(tableName)
' 検索したい行と列の値をシートから取得
Dim searchRowValue As Variant
Dim searchColValue As Variant
searchRowValue = Sheets("Sheet1").Range("M3").Value ' 行方向の検索値
searchColValue = Sheets("Sheet1").Range("N3").Value ' 列方向の検索値
' テーブルの1列目を行方向検索の対象とする
Set rowDataRange = tableRange.ListColumns(1).DataBodyRange
' テーブルのデータ部分の3行目を列方向検索の対象とする
Set headerRange = tableRange.HeaderRowRange.Offset(2) ' ヘッダーの2行下を対象に設定
' M3の値を1列目で検索し、一致する行番号を取得
On Error Resume Next
rowNum = Application.WorksheetFunction.Match(searchRowValue, rowDataRange, 0)
On Error GoTo 0
If IsError(rowNum) Then
MsgBox "行が見つかりません。"
Exit Sub
End If
' N3の値をデータ部分の3行目で検索し、一致する列番号を取得
On Error Resume Next
colNum = Application.WorksheetFunction.Match(searchColValue, headerRange, 0)
On Error GoTo 0
If IsError(colNum) Then
MsgBox "列が見つかりません。"
Exit Sub
End If
' 行と列の位置から値を取得
resultValue = tableRange.DataBodyRange.Cells(rowNum, colNum).Value
MsgBox "検索結果: " & resultValue
End Sub
コードの解説
- テーブルを設定する
Set tableRange = ThisWorkbook.Sheets("Sheet1").ListObjects(tableName)
検索対象となるテーブルを特定します。このコードではtableNameという変数にテーブル名を指定しています。 - 行方向の検索
rowNum = Application.WorksheetFunction.Match(searchRowValue, rowDataRange, 0)
行方向の検索にはMatch関数を使います。テーブルの1列目(rowDataRange)から、セルM3に設定された値searchRowValueに一致する行番号を取得します。 - 列方向の検索
colNum = Application.WorksheetFunction.Match(searchColValue, headerRange, 0)
列方向の検索も同様にMatch関数を使用します。テーブルのデータ部分の3行目(headerRange)から、セルN3に設定された値searchColValueに一致する列番号を取得します。 - 検索結果の表示
resultValue = tableRange.DataBodyRange.Cells(rowNum, colNum).Value
検索した行と列の位置から値を取得し、MsgBoxを使って結果を表示します。
3. 応用: 値を他のセルに表示する
取得した値を MsgBox ではなく、シート上の任意のセルに表示することも可能です。以下のコードでは、検索結果を V3 セルに表示します。
Sheets("Sheet1").Range("V3").Value = resultValue
まとめ
このコードを使えば、Excel VBAで特定の条件に一致するテーブルの値を簡単に検索し、利用することができます。大量のデータや複数条件での検索が必要な場合、この方法は非常に便利です。テーブル内でのデータ処理を効率化したいときに、ぜひお試しください。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
