業務で関数でできないかと思ったらうまくできなかったので本めくりながらVBAをかいてみたのでメモ。
ちょっと応用してやれば最近の業務上けっこう使えそう。
#やりたいこと
リストAにぐちゃぐちゃに入った文字列から、マスタBに一致するものを抜き出す。
つまりこういうデータがあって、
マスタには「リンゴ」とか「バナナ」とか「ミカン」とか入っている状態。
(もちろん業務ではそんなかわいくないけどね!っていうかデータベースにベタの文字列が入ってるのとか同じ内容が別のフィールドに入ってるのほんとやめてほしい)
#コード
Sub 市町村名抜出()
Dim name As String
imasta = 4
idata = 2
'最終行を取得
datalast = Worksheets("listA").UsedRange.Rows.Count
mastalast = Worksheets("masta").UsedRange.Rows.Count
'マスタの最終行まで繰り返す
Do While idata <= datalast
'マスタの最終行まで繰り返す
Do While imasta <= mastalast
'マスタのimasta行目の名称をnameに格納
name = Worksheets("masta").Cells(imasta, 3).Value
'データシートのidata行目にnameが入っていないか確認
'入っていた場合nameをデータシートのidata行目に格納
If Not Worksheets("listA").Cells(idata, 37).Find(name) Is Nothing Then
Worksheets("listA").Cells(idata, 39) = name
Exit Do'見つかったらループ抜ける
'入っていなかった場合にはマスタの次の行へ
Else
imasta = imasta + 1
End If
Loop
'マスタの最終行までいったらimastaをリセットし、データシートの次の行へ
imasta = 4
idata = idata + 1
name = ""
Loop