
VBAかマクロで作成したいと思いますが、あいまい検索ができずに困っております。
どなたかご教授お願いできますでしょうか?
一応画像を添付しておりますが大変見にくく申し訳ないです。
一つのファイルで2枚のワークシートを使用してデータのあいまい検索をしたいと思っております。
画像1の方のワークシートがSheet2になっていてこちらの”I”の列に入力しているデータが画像2になりますが登録商品リストの”G”の列に含まれているかを検索したいと思います。
その結果は”Sheet2”の緑色の部分”I”のセルにデータがあれば”*”をJのセルに表示したいと思います。
登録商品リストには長いもので桁数が30桁近いものもありますがこの桁数を8ケタくらいまでの一致でSheet2のIの列のデータと照合して結果をJに表示できればと思っております。何卒ご教授くださいますようお願いいたします。
照合するデータにつきましては、その日によって件数が違いますので、Sheet2のI列にあるデータが200件くらいの時もあれば2000件くらいの時もございます。
登録商品リストは登録するたびに量が増えていくので照合件数も増えていくことになりますので、どちらも1行指定でできればべすとだとおもっております。

No.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
お返事が遅くなり申し訳ございませんでした。
ありがとうございます。思う通りのデータが作成で来ました。
これで正確なデータの振い分けができるようになりました。
本当に助かりました。
先に作っていたVBAのものと組み合わせたら完璧な処理が一度でできるようになりました。
今後もご教授の方よろしくお願いいたします。
本当にありがとうございました。
No.1
- 回答日時:
[登録商品リスト]
| 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も少しずつ勉強しているのですが、私の手に余る状態になったもので・・・。
何卒ご教授よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】【配列】3つのシー...
-
Excelのセルの色を変えた行(す...
-
文字の色も参照 VLOOKUP
-
EXCELのVBAで複数のシートを追...
-
Excel 2段組み
-
excel 複数のシートの同じ場所...
-
エクセルの横に並んでいるもの...
-
エクセルで横並びの複数データ...
-
【条件付き書式】countifsで複...
-
エクセルで、チェックボックス...
-
オートフィルタ使用時にCOUNTIF...
-
ExcelのVlookup関数の制限について
-
Excel VBAで項目ごとに別々の...
-
シートをまたぐ条件付き書式に...
-
エクセルの列の限界は255列以上...
-
エクセルの保護で、列の表示や...
-
エクセルのVBAで集計をしたい
-
【マクロ】【相談】Excelブック...
-
コマンドボタンがデザインモー...
-
Excel 関数を使ってデータと一...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】【配列】3つのシー...
-
文字の色も参照 VLOOKUP
-
【条件付き書式】countifsで複...
-
ExcelのVlookup関数の制限について
-
エクセルで、チェックボックス...
-
エクセルの保護で、列の表示や...
-
Excelのセルの色を変えた行(す...
-
EXCELのVBAで複数のシートを追...
-
シートをまたぐ条件付き書式に...
-
Excelでの並べ替えを全シートま...
-
Excel の複数シートの列幅を同...
-
VBAで繰り返しコピーしながら下...
-
【VBA】複数のシートの指定した...
-
SUMPRODUCTにて別シートのデー...
-
Excelに自動で行の増減をしたい...
-
エクセルの列の限界は255列以上...
-
Excel 2段組み
-
VLOOKアップ関数の結果の...
-
excel 複数のシートの同じ場所...
-
Excel VBA ピボットテーブルに...
おすすめ情報