重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

VBAかマクロで作成したいと思いますが、あいまい検索ができずに困っております。
どなたかご教授お願いできますでしょうか?

一応画像を添付しておりますが大変見にくく申し訳ないです。

 一つのファイルで2枚のワークシートを使用してデータのあいまい検索をしたいと思っております。
画像1の方のワークシートがSheet2になっていてこちらの”I”の列に入力しているデータが画像2になりますが登録商品リストの”G”の列に含まれているかを検索したいと思います。
その結果は”Sheet2”の緑色の部分”I”のセルにデータがあれば”*”をJのセルに表示したいと思います。
登録商品リストには長いもので桁数が30桁近いものもありますがこの桁数を8ケタくらいまでの一致でSheet2のIの列のデータと照合して結果をJに表示できればと思っております。何卒ご教授くださいますようお願いいたします。

照合するデータにつきましては、その日によって件数が違いますので、Sheet2のI列にあるデータが200件くらいの時もあれば2000件くらいの時もございます。
登録商品リストは登録するたびに量が増えていくので照合件数も増えていくことになりますので、どちらも1行指定でできればべすとだとおもっております。

「エクセルでのデータのあいまい検索のVBA」の質問画像

A 回答 (2件)

こんばんは!


画像が小さくて詳細が判らないのですが、
おそらくこんなコトでしょうか?

↓の画像で左側がSheet1で右側がSheet2とします。
Sheet2のI列の頭から5文字がSheet1のG列データの中にあればJ列にアスタリクスを表示!
としています。
一例です。

Sub Sample1()
Dim i As Long, endRow As Long, str As String, c As Range, wS1 As Worksheet, wS2 As Worksheet
Set wS1 = Worksheets("Sheet1")
Set wS2 = Worksheets("Sheet2")

endRow = wS2.Cells(Rows.Count, "J").End(xlUp).Row
Application.ScreenUpdating = False
If endRow > 1 Then
Range(wS2.Cells(2, "J"), wS2.Cells(endRow, "J")).ClearContents
End If
For i = 2 To wS2.Cells(Rows.Count, "I").End(xlUp).Row
str = Left(wS2.Cells(i, "I"), 5)
Set c = wS1.Range("G:G").Find(what:=str, LookIn:=xlValues, lookat:=xlPart)
If Not c Is Nothing Then
wS2.Cells(i, "J") = "*"
End If
Next i
Application.ScreenUpdating = True
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

お返事が遅くなり申し訳ございませんでした。

ありがとうございます。思う通りのデータが作成で来ました。
これで正確なデータの振い分けができるようになりました。
本当に助かりました。

先に作っていたVBAのものと組み合わせたら完璧な処理が一度でできるようになりました。

今後もご教授の方よろしくお願いいたします。

本当にありがとうございました。

お礼日時:2013/10/20 16:57

[登録商品リスト]


|  G   |
| 11111 |
| 22222 |
| 31233 |
| 44444 |
| 57895 |

[Sheet2]
|  I  | J |
| 123 | * |
| 456 |   |
| 789 | * |

結果はこんな感じになると考えてもよろしいでしょうか?
123は[登録商品リスト]シートの31233に含まれるので「*」がつく。
456は[登録商品リスト]シートにどの行にも含まれないので「*」がつかない。
789は[登録商品リスト]シートに57895に含まれるので「*」がつく。

あと、8ケタくらいまでの一致というのがよくわからないのですが、もう少し詳しく教えていただけますか?

この回答への補足

ご教授ありがとうございます。
出来れば、スタートする数字の並びは変更しないでできればと思います。
最低5文字前半から照合できればと思います。

[登録商品リスト]の方の桁数が商品によっては30ケタを超えることがありますが、照合したい商品のデータには5ケタから8ケタしか入力されていない商品もございますのでその商品をひらうためにあいまい検索ができればと考えた次第です。

私の説明の仕方がわかりづらく大変申し訳ございません。

今回作成しようとしているVBAをほかで作成しているVBAに組み込むことができればボタン一つで一連の作業ができるようになるのではないかと思いました。

VBAも少しずつ勉強しているのですが、私の手に余る状態になったもので・・・。

何卒ご教授よろしくお願いいたします。

補足日時:2013/10/18 10:59
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

今、見られている記事はコレ!