重要なお知らせ

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

【GOLF me!】初月無料お試し

・やりたいこと
【検索対象の表】で、マクロ実行後、【マクロ実行後、得たい結果。】の表を作りたいのです。
同じ商品コードの物は、検索対象の表で何回出てくるか?カウントしたい。

カウント方法は、商品名でも可能ですが、商品コードで今回はカウントしたいのです。

ただ、検索対照の表で、実行すべきプログラムというかアルゴリズムが思いつかず作業が止まっております。


【考えた方法1】
①検索対象の表の行数は、動的であるため、データの開始行はA8で指定してもいいのですが、
行末が場合によって変動するため、(行末取得 = Cells(Rows.Count, 3).End(xlUp).Row ')で考えております。

②下の値から取得して、for文で、上の値と検索し、一致した個数を数える。
で、考えてみたのですが、A23でリンゴが出てきており、上に行くと4回一致。
A19でリンゴが出てきたときは、上に検索していくと3回一致。

で、結果にずれが生じてしまうことに気づき、これ以上、どうしたらいいかわからなくなっております。

【考えた方法2】
多分、ネットで調べてみた感じ、Find、FindNextで調べる方法が一番いいのかなー。と思っております。

ただ、Set rng = searchRng.Find("りんご")のように、一度、「りんご」というキーワードを決め打ちしないと
1回目の検索すらスタートができないとおもうのですが、「リンゴ」に入る検索キーワードがわからない状態なのです。

検索対象の表のリストのみが、いきなり手元に来る状態で、
その表から、何の検索ワードで絞るべきなのか、検索ワード一覧表がないのです。

もちろん手動で、重複削除処理やフィルター機能で、一意の表を作り出すことはできると思いますが、
いかんせん表の数が多いので、手動ではなく、そこもマクロで処理したいのです。

なので、

①【検索対象の表】から【検索ワード表】を一回作る必要があると思っているのですが、【検索ワード表】を作るためのコードの書き方がわからないのです。
 →検索一覧表が作成できれば、検索一覧表の行頭・行末番号を取得して、【Set rng = searchRng.Find(検索一覧表のワード)】をループ処理すれば、カウントできると思っているのですが。

どなたかお分かりの方がおられましたら、ご教示お願いします。

「検索対象の表に存在する同じ商品コードの回」の質問画像

A 回答 (2件)

こんばんは



ご提示の考え方とは異なりますが、シートの計算機能を利用する方法の一例です。
レイアウトはご提示のままを仮定しています。
(ただし、D12:E23の表は作成しません。)

Sub Q12754437()
Dim rg0 As Range, rg1 As Range, n As Long
Const f1 = "=IF(G8="""","""",VLOOKUP(G8,@,2,0))"
Const f2 = "=IF(G8="""","""",COUNTIF(@,G8))"

n = Cells(Rows.Count, 1).End(xlUp).Row - 7
If n < 1 Then Exit Sub
Set rg0 = Range("A8").Resize(n, 2)
Set rg1 = Range("G8")

rg1.Resize(n + 1).Value = rg0.Resize(n + 1).Value
rg1.Resize(n).RemoveDuplicates 1, xlNo
Set rg1 = Range(rg1, rg1.Offset(n).End(xlUp))

rg1.Offset(, 1).FormulaLocal = Replace(f1, "@", rg0.Address)
rg1.Offset(, 2).FormulaLocal = Replace(f2, "@", rg0.Columns(1).Address)
rg1.Resize(, 3).Value = rg1.Resize(, 3).Value
End Sub
    • good
    • 1
この回答へのお礼

ありがとうございます。
裏でも続きをやっていていただいたコードも参考させていただき、何とかできました。ありがとうございます。

お礼日時:2022/01/12 01:24

昔なら


http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v …
こちらを回答してましたね。
    • good
    • 0
この回答へのお礼

Dictionaryオブジェクトなんてあるんですね。
ちょっとページに書かれていることが多いようなので、時間かかるかもしれませんが読んでみます。

お礼日時:2022/01/11 20:17

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