すべてのカテゴリ » インターネット・パソコン » 技術・プログラミング

質問

終了

エクセルVBA(マクロ)について質問です。長文です。

 シート1の表データ(支店別/分類(酒の種類)/売上)をシート2に支店別・分類別に集計、という問題です。
4支店×18種類=計72パターンになります。
 <https://excel-ubara.com/excelvba9/EXCELVBA615.html>の練習問題なので、当然回答はあるのですが、
そこの回答では、クロス集計を利用したもののみでした。
あとは「MATCH関数利用も可」とはありましたが。

 回答確認前に自力で考えたのは、オートフィルターして、subtotalする(各パターン計算ごとにオートフィルター解除し次の組み合わせ)、やり方でした。
かつ、オートフィルターする条件(支店名と分類)をシート2のセルから引っ張ってくる(=A支店の全分類を計算したら、B支店の全分類…のように、繰り返しでやる方法)やり方です。
 For s = 2 To 5 '支店、列(4支店)
 For b = 2 To 19 '分類、行(18種類)
(1, s) '各支店の項目 (ここを、オートフィルターの検索条件にしたい)
(b, 1) '各分類の項目 (ここを、オートフィルターの検索条件にしたい)
…でループ

支店A×ビールの売上(※1):シート2のB2セルに出力したいのですが、

※1:ここの計算コードは以下のとおりです。

WorksheetFunction.Subtotal(9, Worksheets("シート1").Range("C:C")) 'シート1のC列に売上が並んでます。
この計算結果をシート2のB2セルに出力したいのですが、どう繋げるとエラーが発生しないのか不明で困っています。

また、このやり方(オートフィルター+subtotal)は、(行数が多い、コードが難解という意味での)
「美しくない」やり方なのでしょうか?

  • 質問者:VBA独学中
  • 質問日時:2019-02-15 16:57:13
  • 0

関連する質問・相談

Sooda!からのお知らせ

一覧を見る