だいたいこんな感じ

電子制御(Arduino), VBAプログラミング, 水中ドローン,趣味,他

Excel VBA プログラム Find関数でVLOOKUPと同様の処理を行う

VLOOKUP関数やMATCH関数を使えば、

プログラムを使わずに検索できます。

しかし、私は上記の関数を使ったことがないため、

使い方がいまいちわかりません。

VBAでプログラムを組んでしまえば、簡単に文字の検索ができる為です。

f:id:DPM:20180730110332p:plain

添付は、以前紹介しました文字を検索するプログラムになります。

例では、プリキュアという文字列打ち込み、検索ボタンを押すと

該当する文字列の右隣に◎がつくというプログラムです。

これをFind関数を使用するサンプルを以下に示しました。

 

 

--------------------------------------------------

Sub 検索()

Dim kensaku As Range
Set kensaku = Range("C5:C14").Find(What:=Cells(2, "D"), LookAt:=xlWhole)

Dim GYO As Integer
GYO = 5

Do Until GYO = 14


If Cells(GYO, "C") = kensaku Then
Cells(GYO, "C").Offset(0, 1) = "◎"
End If


GYO = GYO + 1
Loop


End Sub

--------------------------------------------------

LookAt:=xlPart)

・Find関数はRangeで範囲指定しなければなりません。

参照するRangeを kensaku とします。C5からC14内のセルの中から、

Cells(2,"D")に完全に一致するものをkensaku内に格納します。

・検索される文字列については5列目から順に14列目まで読み込まないといけません。

この業の変数は文字列なので変数は Integer、こちらをGYOとします。

・GYOは14行まで1ずつ足してチェックしていかなればなりませんので、

Do Until (~まで) Loop を使用します。

列が14になるまでGYOに1足すのでGYO=GYO+1

・Loop処理の間で、kensaku(検索ワード)と参照しているCells(GYO,"C")の

値が完全に一致している時、その右に1つ隣Offset(0,1)に"◎"を記入します。

 

部分一致を行いたい場合

LookAt:=xlWhole を LookAt:=xlPart

にかえるだけ!!

 

f:id:DPM:20180730111500p:plain

こうすると、プリキュアという文字列の"プ"でも"キュア"でも

1文字でも同じものが含まれていた場合、一致したものが◎表示されるように

なります。