Office
 Computer >> コンピューター >  >> ソフトウェア >> Office

ExcelのCOUNTIF関数と正規表現でパターンをカウントする方法【ステップバイステップ完全ガイド】

Microsoft Excelでの作業中、正規表現(Regex)を使って特定のパターンを検索したい場面があるかもしれません。しかし、Excelは標準機能として正規表現をサポートしていないため、多くの方がここでつまずきます。本記事では、VBAでカスタム関数「RegExMatch」を作成し、COUNTIF関数と組み合わせて正規表現パターンをカウントする方法を、ステップバイステップでわかりやすく解説します。

ExcelでCOUNTIFと正規表現を使ってカウントする詳細手順

以下では、ExcelでCOUNTIFと正規表現を組み合わせてカウントを行う具体的な手順を紹介します。

ステップ1:正規表現マッチ用のデータセットを準備する

まず、サンプルとして連絡先リストのデータセットを用意します。このデータに対してCOUNTIF関数と正規表現を組み合わせ、電話番号が含まれているかどうかを判定していきます。

下の画像のように、連絡先リストの中から電話番号の有無を確認します。

ExcelのCOUNTIF関数と正規表現でパターンをカウントする方法【ステップバイステップ完全ガイド】

ステップ2:VBAでカスタムヘルパー関数を作成する

次に、VBAのコードを使ってカスタムヘルパー関数「RegExMatch」を作成します。以下の手順に従って進めてください。

  • まず、ワークブックを開いた状態でAlt + F11キーを押し、「Microsoft Visual Basic for Applications」ウィンドウを開きます。
  • 次に、「挿入」メニューから「標準モジュール」を選択します。

ExcelのCOUNTIF関数と正規表現でパターンをカウントする方法【ステップバイステップ完全ガイド】

  • 続いて、開いたモジュール内に以下のコードを貼り付けて保存します。
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のCOUNTIF関数と正規表現でパターンをカウントする方法【ステップバイステップ完全ガイド】

  • その後、Excel本体では正規表現を直接扱えないため、以下のパターンをワークシート内のセル(例:D4)に入力しておきます。

(\(\d{3}\)|\d{3})[-\.\s]?\d{3}[-\.\s]?\d{4}\b

このパターンは、米国式の電話番号(市外局番あり・なしの両方、区切り記号はハイフン・ピリオド・スペースに対応)を検出するためのものです。

ExcelのCOUNTIF関数と正規表現でパターンをカウントする方法【ステップバイステップ完全ガイド】

関連記事:Excelで正規表現パターンを検索する方法

ステップ3:数式を使って正規表現マッチとカウントを実行する

RegExMatch関数の準備ができたら、実際に文字列とのマッチング判定に活用していきます。

  • まず、任意のセル(ここではC7)を選択し、以下の数式を入力して下方向へコピーします。
=RegExMatch(B7,$D$4)

このRegExMatch関数は、文字列の一部が指定した正規表現パターンに一致するかどうかをTRUE/FALSEで返します。

ExcelのCOUNTIF関数と正規表現でパターンをカウントする方法【ステップバイステップ完全ガイド】

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

ExcelのCOUNTIF関数と正規表現でパターンをカウントする方法【ステップバイステップ完全ガイド】

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

ExcelのCOUNTIF関数と正規表現でパターンをカウントする方法【ステップバイステップ完全ガイド】

  • 続いて、電話番号が含まれるセルの件数を数えるため、C15セルに以下の数式を入力します。
=COUNTIF(C7:C13,TRUE)

ここではCOUNTIF関数を使い、範囲「C7:C13」の中から条件「TRUE」に一致するセルの個数をカウントしています。

ExcelのCOUNTIF関数と正規表現でパターンをカウントする方法【ステップバイステップ完全ガイド】

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

ExcelのCOUNTIF関数と正規表現でパターンをカウントする方法【ステップバイステップ完全ガイド】

関連記事:Excelでパターンマッチングを行う方法

練習用ワークブックのダウンロード

本記事を読みながら実際に操作を試せるよう、練習用ワークブックをダウンロードしてご活用ください。

まとめ

本記事では、ExcelでCOUNTIFと正規表現を組み合わせてパターンをカウントする方法を幅広く解説しました。練習用ワークブックをダウンロードして、ぜひご自身でも手を動かしてみてください。本記事がお役に立てば幸いです。ご感想やご質問があれば、コメント欄でお気軽にお知らせください。

関連記事

  • VBAなしでExcelのREGEXを使う方法
  • ExcelでREGEXを使ってパターンをマッチさせる方法
  • Excelで正規表現を使ってフィルターする方法
  • Excelで正規表現を使ってテキストを検索・置換する方法
  • Excelで正規表現パターンを検索・置換する方法
  • Excelで正規表現によるデータの入力規則を設定する方法

<< Excelでの正規表現 | 文字列操作 | Excelの基礎を学ぶ に戻る

解答付きの無料・高度なExcel演習問題を受け取る!

  1. Power Queryで動的に変わる列ヘッダーを管理する方法:実践ガイド

    実際の業務では、元のデータソースを頻繁に更新することが多く、その過程でPower Query内の列ヘッダーを少し変更することも少なくありません。しかし、Power Queryでヘッダーを変更すると、エラーが表示されることがあります。この問題への対処法をお探しの方にとって、本記事は役立つはずです。ここでは、Power Queryでヘッダーが変化するテーブルに対処する方法を、わかりやすい解説とともに紹介します。 Power Queryでヘッダーが変わるとエラーになる問題 通常、私たちが扱うデータソースには列ヘッダーが付いています。そこからPower Queryを作成すると、元のテーブルの列ヘッダー

  2. Excelファイルをカンマ区切りのテキストファイル(CSV)に変換する3つの方法

    この記事では、Excelファイルをカンマ区切りのテキストファイルに変換する方法を解説します。テキストファイルは読みやすくメモリ消費も少ないため、データセットのインポートやエクスポートにも非常に便利です。ここでは3つの方法を紹介します。これらを習得すれば、単一のExcelファイルだけでなく、複数のExcelファイルもまとめてテキストファイルへ変換できるようになります。それでは早速見ていきましょう。 練習用ブックのダウンロード 練習用ブックはこちらからダウンロードできます。 Excelファイルをカンマ区切りのテキストファイルに変換する3つの方法 解説には、販売者の売上金額に関するデータを含むE