Excel VBA 質問スレッド №2015 (未解決)

複数条件に合致する商品の合計を求めたいです。

投稿者 : BANGBANG     投稿日時 : 2024/09/20(Fri) 19:42:14     OS : Windows 10     EXCEL : Excel 2016
Excelのマクロ初心者です。
条件に合うデータを抽出して別シート(1.2.3)へ転記し、個数を合計したいのですが、ご助力いただけないでしょうか。

【元データ】
商品コード 商品名 個数
10100 プラモ 3
20100 アクスタ 2
30100 フィギュアA 5
30200 フィギュアB 5
90100 シャーペン 2

【条件】
1.商品コードの頭1桁を参照し、別の3シート(A,B,C列)へそれぞれ振り分け
2.特定の商品コードに該当するものは3シート(E,F,G列)へそれぞれ振り分け
3.それぞれの商品コード毎の個数を合計

このようなイメージなのですがご回答いただけないでしょうか。

スポンサーリンク
[返信 1] Re : 複数条件に合致する商品の合計を求めたいです。
投稿者 : さんこう     投稿日時 : 2024/09/20(Fri) 20:26:18
>このようなイメージなのですが

もう少しハッキリしたイメージにするといいでしょう。


>1.商品コードの頭1桁を参照し、別の3シート(A,B,C列)へそれぞれ振り分け

「商品コードの頭1桁」は、「1」「2」「3」「9」があるようですが、それぞれどのシートへ振り分けるのでしょうか。


>2.特定の商品コードに該当するものは3シート(E,F,G列)へそれぞれ振り分け

「特定の商品コード」とは、なんでしょうか。


>3.それぞれの商品コード毎の個数を合計

元データには、同じ商品コードがありませんので、合計する必要がなさそうに見えますが、
実際のデータでは同じ商品コードがあるのでしょうか。

[返信 2] Re : 複数条件に合致する商品の合計を求めたいです。
投稿者 : BANGBANG     投稿日時 : 2024/09/24(Tue) 09:02:02
ご指摘ありがとうございます。
以下インラインにて失礼いたします。

■[返信 1] さんこうさん(2024-09-20 20:26:18)の記事
> >このようなイメージなのですが

> もう少しハッキリしたイメージにするといいでしょう。


> >1.商品コードの頭1桁を参照し、別の3シート(A,B,C列)へそれぞれ振り分け

> 「商品コードの頭1桁」は、「1」「2」「3」「9」があるようですが、それぞれどのシートへ振り分けるのでしょうか。

⇒商品コード頭「1」「2」は「シートA」、商品コード頭「3」は「シートB」、商品コード頭「9」は「シートC」へ振り分ける想定です。


> >2.特定の商品コードに該当するものは3シート(E,F,G列)へそれぞれ振り分け

> 「特定の商品コード」とは、なんでしょうか。
⇒例えば「30200」のように完全一致した場合には、頭「3」で「シートB」のEFG列
   また、この特定の商品コードは増えていく為、追加・削除・変更なようにしたいです。
   何かマスタシートのようなものが必要でしょうか。


> >3.それぞれの商品コード毎の個数を合計

> 元データには、同じ商品コードがありませんので、合計する必要がなさそうに見えますが、
> 実際のデータでは同じ商品コードがあるのでしょうか。
⇒テストデータ足りておらず申し訳ありません。
 実際のデータでは同じ商品コードあり、加算する必要があります。
 データ修正いたしました。  

商品コード 商品名 個数
10100 プラモ 3
20100 アクスタ 2
30100 フィギュアA 5
30200 フィギュアB 5
90100 シャーペン 2
10100 プラモ 5
20100 アクスタ 3
30100 フィギュアA 1
30200 フィギュアB 1
90100 シャーペン 4
20100 アクスタ 2
30100 フィギュアA 2

[返信 3] Re : 複数条件に合致する商品の合計を求めたいです。
投稿者 : さんこう     投稿日時 : 2024/09/24(Tue) 10:49:03
>⇒商品コード頭「1」「2」は「シートA」、商品コード頭「3」は「シートB」、商品コード頭「9」は「シートC」へ振り分ける想定です。

>⇒例えば「30200」のように完全一致した場合には、頭「3」で「シートB」のEFG列
>   また、この特定の商品コードは増えていく為、追加・削除・変更なようにしたいです。
>   何かマスタシートのようなものが必要でしょうか。

最初のご質問からは想像つかない振り分けかたになっていますが、おっしゃるように、「マスタシートのようなもの」があるといいでしょう。

例えば、こんな感じでしょうか。

  A  B  C  D   E
特定コード    その他 
コード シート  コード シート
30200  B     1*   A
         2*   A
         3*   B
         9*   C


とりあえずは、転記先とかは無視して、全てシートA(A,B,C列)へ転記するところから作成してみてはいかがでしょうか。

<vba 転記 別シート>
https://www.google.com/search?q=vba+%E8%BB%A2%E8%A8%98+%E5%88%A5%E3%82%B7%E3%83%BC%E3%83%88


それができたら、特定コードを判定して、転記先の列を変える(E,F,G列)ようにしてみるとか、

マスタから転記先のシートを取得して、転記先シートを変えるようにしていくといいでしょう。



> 実際のデータでは同じ商品コードあり、加算する必要があります。

加算(合計)するのはいいですが、どこに結果を表示するのでしょうか。

[返信 4] Re : 複数条件に合致する商品の合計を求めたいです。
投稿者 : BANGBANG     投稿日時 : 2024/09/24(Tue) 14:34:15
■[返信 3] さんこうさん(2024-09-24 10:49:03)の記事
> >⇒商品コード頭「1」「2」は「シートA」、商品コード頭「3」は「シートB」、商品コード頭「9」は「シートC」へ振り分ける想定です。

> >⇒例えば「30200」のように完全一致した場合には、頭「3」で「シートB」のEFG列
> >   また、この特定の商品コードは増えていく為、追加・削除・変更なようにしたいです。
> >   何かマスタシートのようなものが必要でしょうか。

> 最初のご質問からは想像つかない振り分けかたになっていますが、おっしゃるように、「マスタシートのようなもの」があるといいでしょう。

> 例えば、こんな感じでしょうか。

>   A  B  C  D   E
> 特定コード    その他 
> コード シート  コード シート
> 30200  B     1*   A
>          2*   A
>          3*   B
>          9*   C


> とりあえずは、転記先とかは無視して、全てシートA(A,B,C列)へ転記するところから作成してみてはいかがでしょうか。

> <vba 転記 別シート>
> https://www.google.com/search?q=vba+%E8%BB%A2%E8%A8%98+%E5%88%A5%E3%82%B7%E3%83%BC%E3%83%88
⇒ありがとうございます。
まずは転記から調べてみようと思います。


> それができたら、特定コードを判定して、転記先の列を変える(E,F,G列)ようにしてみるとか、

> マスタから転記先のシートを取得して、転記先シートを変えるようにしていくといいでしょう。

⇒何か使用できそうな関数などありましたらご教示いただけないでしょうか。



> > 実際のデータでは同じ商品コードあり、加算する必要があります。

> 加算(合計)するのはいいですが、どこに結果を表示するのでしょうか。
⇒各シートにそれぞれ表示するイメージです
A B C
商品コード 商品名 合計個数
30100 フィギュアA 8


[返信 5] Re : 複数条件に合致する商品の合計を求めたいです。
投稿者 : さんこう     投稿日時 : 2024/09/24(Tue) 15:03:31
>⇒何か使用できそうな関数などありましたらご教示いただけないでしょうか。

お好みの方法を使えばよろしいかと思います。
・WorksheetFunction.VLookUp
・WorksheetFunction.Match
・RangeオブジェクトのFindメソッド など

<VBA マスタを参照>
https://www.google.com/search?q=VBA+%E3%83%9E%E3%82%B9%E3%82%BF%E3%82%92%E5%8F%82%E7%85%A7


>⇒各シートにそれぞれ表示するイメージです

よくわかりませんが、単に転記するだけではなく、重複する商品コードの場合は個数を足していくということでしょうか。

だとしたら、転記するときに、転記先に同じ商品コードが存在するか確認すればいいでしょう。

同じ商品コードが存在するかの確認は、マスタを参照するのと同じ要領でできます。

[返信 6] Re : 複数条件に合致する商品の合計を求めたいです。
投稿者 : jindon     投稿日時 : 2024/10/02(Wed) 12:26:34
BANGBANGさん、

ADO接続での処理も考慮されても良いのでは?

1) 各条件を配列に格納
2) 定型の個数の合計を含めたSQl文字列を作成
3) 2) のSQL文字列の条件部分を 1) の配列の中身と置き換えて問い合わせ
4) 結果を該当シートに出力

こんな感じです。

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2025-07-05 05:27:43 )
タイトルとURLをコピーしました