範囲内で特定文字が含まれるセルの個数をカウント(結合セルを考慮)

' fncCountSubstringOccurrences
' この関数は指定されたExcel範囲内で特定の部分文字列が含まれるセルの数をカウントします。
' 結合されたセルも個別のセルとしてカウントされます。
' 引数:
'   rngSearchRange - 検索を行う範囲を指定するRangeオブジェクト。
'   strSubstring - カウントする対象の部分文字列。
' 戻り値:
'   Integer - 指定された部分文字列を含むセルの総数。

Function fncCountSubstringOccurrences(ByVal rngSearchRange As Range, ByVal strSubstring As String) As Integer
    Dim rngCell As Range   ' 検索範囲内の個々のセルを表す
    Dim intCount As Integer ' 部分文字列が見つかったセルの数をカウント

    intCount = 0 ' カウンターの初期化

    ' 指定された範囲内の各セルに対してループ処理
    For Each rngCell In rngSearchRange
        ' 結合されたセルの場合
        If rngCell.MergeCells Then
            ' 結合されたセルの最初のセルであるかをチェック
            If rngCell.Address = rngCell.MergeArea(1).Address Then
                ' 部分文字列が含まれているかチェック
                If InStr(rngCell.Value, strSubstring) > 0 Then
                    intCount = intCount + 1 ' 部分文字列が見つかったらカウントアップ
                End If
            End If
        Else ' 結合されていないセルの場合
            ' 部分文字列が含まれているかチェック
            If InStr(rngCell.Value, strSubstring) > 0 Then
                intCount = intCount + 1 ' 部分文字列が見つかったらカウントアップ
            End If
        End If
    Next rngCell

    fncCountSubstringOccurrences = intCount ' 関数の戻り値としてカウント数を返す
End Function

コメント