• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:同じものを集計するマクロ)

マクロを使って注文書データを集計する方法

このQ&Aのポイント
  • 注文書のデータをマクロを使用して品番ごとに個数を集計する方法を紹介します。
  • 手作業で約9000件のデータを集計するのは非常に時間がかかるため、自動化することで時間短縮を図ることができます。
  • 集計結果は仕入先ごとにシートを分けて表示されます。

質問者が選んだベストアンサー

  • ベストアンサー
  • hogehage
  • ベストアンサー率50% (54/107)
回答No.1

こんな感じでしょうか。  入力も出力も列は、 ■A列:仕入先、B列:品番、C列:個数 としています。 ■また、2行目からデータがあるものとしています。 ■出力するシートは追加しています。  (見出しは書いていません) Dim SIIRE_SAKI() As String '仕入先 Dim HINBAN() As String '品番 Dim KOSUU() As Double '個数 Dim IDX As Double 'インデックス REDIM_CNT = 200 '仕入先+品番の組み合わせの最大数 ReDim SIIRE_SAKI(REDIM_CNT) ReDim HINBAN(REDIM_CNT) ReDim KOSUU(REDIM_CNT) '「集計」---------------------------------------------------------- Worksheets("Sheet1").Select '読み込みむ明細シート END_ROW = Range("A65536").End(xlUp).Row 'A列の最下行 For ii = 2 To END_ROW '2行目から最下行をループ  For kk = 1 To IDX '配列をループ   If Cells(ii, "A").Value = SIIRE_SAKI(kk) _    And Cells(ii, "B").Value = HINBAN(kk) Then '配列に同一の仕入先+品番が見つかった    KOSUU(kk) = KOSUU(kk) + Cells(ii, "C").Value '個数を加算    FOUND# = 1 '見つかった    Exit For   End If  Next kk  If FOUND# = 0 Then '配列になかった   '配列に追加   IDX = IDX + 1   SIIRE_SAKI(IDX) = Cells(ii, "A").Value   HINBAN(IDX) = Cells(ii, "B").Value   KOSUU(IDX) = Cells(ii, "C").Value  End If  FOUND# = 0 '配列になしにリセット Next ii '「書き出し」------------------------------------------------------ For ii = 1 To IDX  '仕入先が前件と同じ  If SIIRE_SAKI(ii) = SIIRE_SAKI(ii - 1) Then   W_ROW = W_ROW + 1   Cells(W_ROW, "A").Value = SIIRE_SAKI(ii)   Cells(W_ROW, "B").Value = HINBAN(ii)   Cells(W_ROW, "C").Value = KOSUU(ii)   '仕入先が変わった  Else   Worksheets.Add 'シート追加   ActiveSheet.Name = SIIRE_SAKI(ii) 'シート名を仕入先にする   Worksheets(SIIRE_SAKI(ii)).Move After:=Worksheets(Worksheets.Count) '一番最後にシート移動   '書き込み   Worksheets(SIIRE_SAKI(ii)).Select   W_ROW = 2   Cells(W_ROW, "A").Value = SIIRE_SAKI(ii)   Cells(W_ROW, "B").Value = HINBAN(ii)   Cells(W_ROW, "C").Value = KOSUU(ii)  End If Next ii

smilepick
質問者

お礼

お礼が遅くなりすいません。 ほぼイメージどおりのものができました。 (質問内容からすれば完璧です) ここから少し手を加えて、完成度を上げていきます。 ありがとうございました。

その他の回答 (1)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

完成イメージとは少し違うけど、ピボットテーブルでページの表示をすれば簡単に分けられますよ。 ページフィールドに「仕入先」 行フィールドに「品番」 データアイテムに「個数」 でピボットを作り、仕入先で右クリックして「ページの表示」

関連するQ&A

専門家に質問してみよう