ExcelのCOUNTIF関数と正規表現でパターンをカウントする方法【ステップバイステップ完全ガイド】
Microsoft Excelでの作業中、正規表現(Regex)を使って特定のパターンを検索したい場面があるかもしれません。しかし、Excelは標準機能として正規表現をサポートしていないため、多くの方がここでつまずきます。本記事では、VBAでカスタム関数「RegExMatch」を作成し、COUNTIF関数と組み合わせて正規表現パターンをカウントする方法を、ステップバイステップでわかりやすく解説します。
ExcelでCOUNTIFと正規表現を使ってカウントする詳細手順
以下では、ExcelでCOUNTIFと正規表現を組み合わせてカウントを行う具体的な手順を紹介します。
ステップ1:正規表現マッチ用のデータセットを準備する
まず、サンプルとして連絡先リストのデータセットを用意します。このデータに対してCOUNTIF関数と正規表現を組み合わせ、電話番号が含まれているかどうかを判定していきます。
下の画像のように、連絡先リストの中から電話番号の有無を確認します。

ステップ2:VBAでカスタムヘルパー関数を作成する
次に、VBAのコードを使ってカスタムヘルパー関数「RegExMatch」を作成します。以下の手順に従って進めてください。
- まず、ワークブックを開いた状態でAlt + F11キーを押し、「Microsoft Visual Basic for Applications」ウィンドウを開きます。
- 次に、「挿入」メニューから「標準モジュール」を選択します。

- 続いて、開いたモジュール内に以下のコードを貼り付けて保存します。
Public Function RegExMatch(input_reg_range As Range, reg_pattern As String, Optional reg_match As Boolean = True) As Variant
Dim WX() As Variant
Dim Input_Row, Input_Col, cnt_Rows, cnt_Cols As Long
On Error GoTo ErrHandl
RegExMatch = WX
Set Wregex = CreateObject("VBScript.RegExp")
Wregex.pattern = reg_pattern
Wregex.Global = True
Wregex.MultiLine = True
If True = reg_match Then
Wregex.ignorecase = False
Else
Wregex.ignorecase = True
End If
cnt_Rows = input_reg_range.Rows.Count
cnt_Cols = input_reg_range.Columns.Count
ReDim WX(1 To cnt_Rows, 1 To cnt_Cols)
For Input_Row = 1 To cnt_Rows
For Input_Col = 1 To cnt_Cols
WX(Input_Row, Input_Col) = Wregex.Test(input_reg_range.Cells(Input_Row, Input_Col).Value)
Next
Next
RegExMatch = WX
Exit Function
ErrHandl:
RegExMatch = CVErr(xlErrValue)
End Function

- その後、Excel本体では正規表現を直接扱えないため、以下のパターンをワークシート内のセル(例:D4)に入力しておきます。
(\(\d{3}\)|\d{3})[-\.\s]?\d{3}[-\.\s]?\d{4}\b
このパターンは、米国式の電話番号(市外局番あり・なしの両方、区切り記号はハイフン・ピリオド・スペースに対応)を検出するためのものです。

関連記事:Excelで正規表現パターンを検索する方法
ステップ3:数式を使って正規表現マッチとカウントを実行する
RegExMatch関数の準備ができたら、実際に文字列とのマッチング判定に活用していきます。
- まず、任意のセル(ここではC7)を選択し、以下の数式を入力して下方向へコピーします。
=RegExMatch(B7,$D$4)
このRegExMatch関数は、文字列の一部が指定した正規表現パターンに一致するかどうかをTRUE/FALSEで返します。

- Enterキーを押すと判定結果が表示されます。

- 次に、セル右下の「フィルハンドル」を下へドラッグして、列全体に数式をコピーします。

- 続いて、電話番号が含まれるセルの件数を数えるため、C15セルに以下の数式を入力します。
=COUNTIF(C7:C13,TRUE)
ここではCOUNTIF関数を使い、範囲「C7:C13」の中から条件「TRUE」に一致するセルの個数をカウントしています。

- 最後にEnterキーを押せば、結果が表示されます。
- これで、COUNTIF関数と正規表現を組み合わせて、Excel上で電話番号の件数を見事に抽出できました。

関連記事:Excelでパターンマッチングを行う方法
練習用ワークブックのダウンロード
本記事を読みながら実際に操作を試せるよう、練習用ワークブックをダウンロードしてご活用ください。
まとめ
本記事では、ExcelでCOUNTIFと正規表現を組み合わせてパターンをカウントする方法を幅広く解説しました。練習用ワークブックをダウンロードして、ぜひご自身でも手を動かしてみてください。本記事がお役に立てば幸いです。ご感想やご質問があれば、コメント欄でお気軽にお知らせください。
関連記事
- VBAなしでExcelのREGEXを使う方法
- ExcelでREGEXを使ってパターンをマッチさせる方法
- Excelで正規表現を使ってフィルターする方法
- Excelで正規表現を使ってテキストを検索・置換する方法
- Excelで正規表現パターンを検索・置換する方法
- Excelで正規表現によるデータの入力規則を設定する方法
<< Excelでの正規表現 | 文字列操作 | Excelの基礎を学ぶ に戻る
解答付きの無料・高度なExcel演習問題を受け取る!
-
Power Queryで動的に変わる列ヘッダーを管理する方法:実践ガイド
実際の業務では、元のデータソースを頻繁に更新することが多く、その過程でPower Query内の列ヘッダーを少し変更することも少なくありません。しかし、Power Queryでヘッダーを変更すると、エラーが表示されることがあります。この問題への対処法をお探しの方にとって、本記事は役立つはずです。ここでは、Power Queryでヘッダーが変化するテーブルに対処する方法を、わかりやすい解説とともに紹介します。 Power Queryでヘッダーが変わるとエラーになる問題 通常、私たちが扱うデータソースには列ヘッダーが付いています。そこからPower Queryを作成すると、元のテーブルの列ヘッダー
-
Excelファイルをカンマ区切りのテキストファイル(CSV)に変換する3つの方法
この記事では、Excelファイルをカンマ区切りのテキストファイルに変換する方法を解説します。テキストファイルは読みやすくメモリ消費も少ないため、データセットのインポートやエクスポートにも非常に便利です。ここでは3つの方法を紹介します。これらを習得すれば、単一のExcelファイルだけでなく、複数のExcelファイルもまとめてテキストファイルへ変換できるようになります。それでは早速見ていきましょう。 練習用ブックのダウンロード 練習用ブックはこちらからダウンロードできます。 Excelファイルをカンマ区切りのテキストファイルに変換する3つの方法 解説には、販売者の売上金額に関するデータを含むE