和英併記 ② Findで探して併記

昨日はExcel単語帳から、Vlookup関数を用いて表を和英併記化してみた。
infoment.hatenablog.com
今日は、Findメソッドでの和英併記化に挑戦する。
f:id:Infoment:20200212223629j:plain

今日の作戦は、こんな感じだ。

  1. ループで、表の単語を一つずつ調べる。
  2. 単語帳内で検索し、見つけた場合は、その右隣のセルの値を取得する。
    見つからなかった場合は、「単語帳に無し」とする。
  3. 取得した値を、元の値の後ろにセル内改行で追加する。
Sub Sample()
    ' 和英併記にする範囲。
    Dim TableRange As Range
    Set TableRange = Range("A3:A6")
    ' 単語帳の和文列。
    Dim DictRange As Range
    Set DictRange = Range("C3:C5")
    
    ' 各単語を和英併記化。
    Dim r As Range
    ' 検索結果。
    Dim FindResult As Range
        For Each r In TableRange
            ' 完全一致で検索。
            Set FindResult = DictRange.Find(What:=r.Value, _
                                          LookAt:=xlWhole)
                ' 検索結果が存在する場合。
                If Not FindResult Is Nothing Then
                    r = r & vbNewLine & FindResult.Offset(, 1)
                ' 検索結果が存在しない場合。
                Else
                    r = r & vbNewLine & "単語帳に無し"
                End If
        Next
End Sub

結果が ↓ こちら。
f:id:Infoment:20200212224901p:plain

割と一般的というか、理解し易い素直な手法ではなかろうか。

ただし、Findメソッドは直前の検索条件を引き継いでしまったり、検索条件を後に残してしまうところが難点だ。
↓ 大文字と小文字、半角と全角、部分一致と完全一致など。
f:id:Infoment:20200212225315p:plain

そこで次回は、Findメソッドを用いない方法について紹介します。

参考まで。