本記事では「漢字の読みを取得して漢字に対応した頭文字検索をする方法」について解説していきます。
また、本記事のゴールは「頭文字が漢字のときに読みで識別できるようにする」になります。
漢字の読みを取得して漢字に対応した頭文字検索
漢字を識別するには「GetPhoneticメソッド」が必須
当たり前ですが、漢字は漢字として認識されます。
例えば、下のようにワイルドカードを使って「新井(あらい)」の頭文字が「あ」であるかを確認してみます。
1 2 3 4 5 |
Sub sample1() Debug.Print "新井" Like "あ*" ' False End Sub |
上のコードでは”False”が返されてしまいます。
上のコードをTrueにしたいのであれば、「”あ*”→”新*”」にする必要があります。
なので、頭文字が漢字だったときに対応できるように『GetPhoneticメソッド』を使うと解決します。
GetPhoneticメソッドはApplicationオブジェクトのメソッドです。
このメソッドは”引数に指定した文字列(日本語)の読みを返す”というものです。
※返される文字列は「カタカナ」である。
1 2 3 4 5 6 7 |
Sub sample2() Debug.Print Application.GetPhonetic("田中太郎") 'タナカラロウ Debug.Print Application.GetPhonetic("たなかたろう") 'タナカラロウ Debug.Print Application.GetPhonetic("A") 'A End Sub |
そして、このメソッドを下のように『Like演算子+ワイルドカード』であいまい検索の条件に組み込むことで頭文字が漢字のときにでも対応することができます。
1 2 3 4 5 6 |
Sub sample3() Debug.Print "新井" Like "ア*" ' False Debug.Print Application.GetPhonetic("新井") Like "ア*" ' True End Sub |
このようにGetPhoneticメソッドとあいまい検索を使えば、漢字に対応した頭文字検索ができるようになるわけです。
【実践編】複数の文字列が「あ行」であるかを識別する
ここではちょこっと実践的なコードを書いておきます。
下のコードは「新井(あらい)・佐藤(さとう)・江川(えがわ)の3つの姓のうち、頭文字があ行の姓を取得する」という内容となっています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Sub sample4() Dim name As Variant Dim names(1 To 3) As String names(1) = "新井" names(2) = "佐藤" names(3) = "荒川" Dim tmp As Long Dim aLine() As String ReDim aLine(3) As String For Each name In names If Application.GetPhonetic(name) Like "[ア-オ]*" Then aLine(tmp) = name tmp = tmp + 1 End If Next ReDim Preserve aLine(tmp - 1) As String MsgBox Join(aLine, "・") & "は「あ行」です。" End Sub |
上のコードを実行すると下のような結果が得られます。
【VBA】リストボックスに頭文字が「あ行」のレコードを表示する【あかさたなはまやらわ】
エクセルVBAでツールを作るときに「レコードを頭文字で検索し取得したい!」ときがあります。
そして、「取得したレコードをフォーム上のリストボックスなどに表示したい」という人がいるかと思います。
そんなときに多くの人は「新...
〇おすすめのVBA参考書ランキング!
1位 | 2位 | 3位 |
---|---|---|
Excel VBA 脱初心者のための集中講座 | パーフェクトExcel VBA | ExcelVBA 実戦のための技術 |
初心者~中級者 | 中級者 | 初心者~中級者 |
【初心者が手に取るべき参考書】 ・「書籍+動画」で圧倒的に理解しやすい入門書になっている。 ・丁寧で詳しい解説でボリューム感がある。 | 【より深い理解をしたい方にお勧めな参考書】 ・テーマに対して丁寧な解説・適度な深さで解説されている。 ・幅広くテーマを扱っていることから、基礎知識をあらかた網羅できる。 | 【入門書と一緒に買うべき参考書】 ・1つ1つのテーマを経験豊富なエンジニア視点で解説してくれている。 ・実践的で効果的なコードの書き方が理解できる。 |
【読んでみた一言】 正直、入門書はコレ一冊でいいかも。あとは中級者用の参考書に進むべし。 | 【読んでみた一言】 深く書かれているが、少々専門的に書かれていることから、読む前に数冊の入門書を読破したほうが良い。 | 【読んでみた一言】 基礎知識を持っている人が次のレベルに達するきっかけを与えてくれる参考書である。 |
スポンサーリンク