Sub FilterByJapaneseInitial()
Dim tgtList As Range ' 表全体
Dim cell As Range ' ループ用セル
Dim criteria As Variant ' 条件配列
Dim tmpArr() As String ' 動的配列
Dim i As Long
Set tgtList = Worksheets("Sheet1").Range("A2").CurrentRegion
ReDim tmpArr(0)
'-- B 列の値を確認し、「あ行」で始まる文字列を配列に追加 --
For Each cell In tgtList.Columns(2).Cells
If cell.Row <= tgtList.Row Then GoTo ContinueLoop ' 見出し行を除外
If cell.Value Like "[あいうえお]*" Then
ReDim Preserve tmpArr(UBound(tmpArr) + 1)
tmpArr(UBound(tmpArr)) = cell.Value
End If
ContinueLoop:
Next cell
'--- 配列が空の場合は処理を終了 ---
If UBound(tmpArr) = 0 Then
MsgBox "抽出条件に一致するデータがありませんでした。", vbInformation
Exit Sub
End If
'--- AutoFilter で抽出 ---
criteria = tmpArr
tgtList.AutoFilter Field:=2, _
Operator:=xlFilterValues, _
Criteria1:=criteria
End Sub
コード解説
行
説明
7
CurrentRegion で見出し行を含む表全体を取得しています。
11–17
Like "[あいうえお]*" により先頭が「あ・い・う・え・お」のセルだけを判定しています。判定結果を動的配列 tmpArr に格納します。