• 締切済み

VBA 多数セルの合計

多数のセルを合計したいのですが… オートSUMでやったのですが選択したセルが多すぎて出来ませんでした。 画像を見ていただきたいのですが。 左に日付、日付ごとに食べ物が4個書かれてます。 それが1日~31日まであります。 私がやりたいのは…。 たとえばE列にある田中さんのラーメンだけの1日~31日の合計を 31日の最後の行に出る様にマクロを組みたいのです。 次は餃子だけの1日~31日までの合計… 次はチャーハンだけの1日~31日までの合計… 次は春巻だけの1日~31日までの合計… オブジェクトにマクロを登録するやり方(標準モジュール??)でお願いします。 VBAは初心者なので詳しく教えて頂けると助かります。 宜しくお願いします。

みんなの回答

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.3

VBAを使わなくても出来ます 関数SUMIFを使用する方法です 田中さんで説明します D列:項目列 E列:田中さんの販売?個数 図の表で12月31日の春巻は129行目になると思うので D130:ラーメン D131:餃子 D132:チャーハン D133:春巻 sumif(項目列範囲,検索値,販売個数範囲) E130:=SUMIF(D$6:D$129,$D130,E$6:E$129) E130を選択して下方向へE133までコピー E130からE133まで選択して 右方向へ人数分コピー 以上参考まで

すると、全ての回答が全文表示されます。
noname#144013
noname#144013
回答No.2

こんにちは。 VBAでの回答でなくてすみません。 また、見当外れでしたらすみません。 ご要望の処理は、VBAを使わなくても、#1さんの言われるようにワークシート関数 を使用しても可能だと思います。 以下は、SUMPRODUCT関数を使用した一例です。 1)シート上の「表」の最後の行の下に、以下のように「月集計」用の欄を作ります。       A    B    C      D       E      F      G    1      2      12月    3      4      5                          田中    佐藤    鈴木 ・・・    6       1日   火    ラーメン     7      0      10  ・・・    7                 餃子       8      1      11  ・・・    8                 チャーハン    9      2      12  ・・・    9                 春巻       5      3      13  ・・・    :        :    :      :       :      :       :   ・・・    :        :    :      :       :      :       :   ・・・   126      31日  木    ラーメン       127                 餃子         128                 チャーハン     129                 春巻         130     月集計       ラーメン    (数式)   (数式)   (数式) ・・・   131                 餃子        :      :      :   ・・・   132                 チャーハン    :      :      :   ・・・   133                 春巻        :      :      :   ・・・ 2)上記1)で追加した、「月集計」欄の「数式」を入れるセル範囲の左上隅のセル   (今回の場合は、E130のセル)に、以下の数式を入れます。   E130 =SUMPRODUCT(($D$6:$D$129=$D130)*(E$6:E$129)) 3)上記2)で数式を入れたセルをコピーして、他の数式用セルに、その数式を   コピーします。   ※以下の操作を行って下さい。   <コピー先セルに数式のみコピーする手順>    1.E130セルを選択します。      ※マウスでE130セルをクリックして選択して下さい。    2.下記の何れかの操作でコピーします。      a.マウス操作 : 右クリックメニューより、「コピー」を選択      b.メニュー操作:  「編集」→「コピー」      c.キー操作   : [Ctrl]+[C]    3.数式をコピーしたいセル範囲を選択します。      ※マウスでセル範囲を選択して下さい。      ※選択するセル範囲には、コピー元のセル(E130)を含んでいても       構いません。    4.下記の何れかの操作で「形式を選択して貼り付け」を選択します。      a.マウス操作 : 右クリックメニューより、「形式を選択して貼り付け」      b.メニュー操作: 「編集」→「形式を選択して貼り付け」    5.「形式を選択して貼り付け」のダイアログが表示されますので、      そこで、ラジオボタン(オプションボタン)の「数式」を選択します。    6.[OK]ボタンをクリックします。 以上で、操作完了です。 これで、数式を入れたセルに、目的とする「集計値」が表示されると思います。 ※参考までに、上記例のワークシート画面を添付致します。   (見辛ければ、拡大してご覧下さい。) 今回使用した数式(SUMPRODUCT関数)について、大雑把に説明しますと、  1)D列(D6~D129)の食品名の中から、「集計欄」の食品名(D130~D133)と    一致するセルを見つけ出します。    ⇒数式内の ($D$6:$D$129=$D130) の部分に相当します。                  ↑                 (*1)      (*1)この部分が、           一致した場合は、    TRUE(=1)           一致しなかった場合は、FALSE(=0)         という値の配列になります。  2)上記1)で見つけたセルがある行の、該当する個人別のセル列の各値の    合計を計算して返します。    ⇒ =SUMPRODUCT(($D$6:$D$129=$D130)*(E$6:E$129))                     ↑            ↑                    (*1)           (*2)      (*1)この部分の、TRUE or FALSE という値の配列が、         "*"を付加して乗算式とすることで、1 or 0 という値の配列として         解釈され計算されます。      (*2)この部分が、個人別のセル列の各値の配列として解釈されます。    上記(*1)と(*2)の各配列は、各要素ごとに、1対1に対応していて、    それぞれの組で、乗算が行われます。       ↓    その乗算結果のそれぞれについて、さらにその合計値を計算するのが    SUMPRODUCT関数の機能です。    下記は、上記例でのE130セルの数式の処理イメージです。      (*1)の配列   (*2)の配列   (*1)*(*2)の結果         1         7          7         0         8          0         0         9          0         0         5          0         1         8          8         0         6          0         0         5          0         0         4          0         :         :          :         :         :          :                            ↑この値の合計値が返される と言ったような内容になります。 SUMPRODUCT関数について、もしも解らなければ、Excelのヘルプ及び、 下記の参考サイトをご覧になってみて下さい。 ■参考サイト Excel SUMPRODUCT関数 http://www.geocities.jp/kotopara_g/oshiete01/e_sumproduct.htm Excel豆知識29-3:エクセル:SUMPRODUCT関数 http://www11.plala.or.jp/koma_Excel/contents3/mame3029/mame302903.html 以上です。参考になれば幸いです。

m09020510
質問者

お礼

お礼が遅くなり申し訳ありません。 今回も助かりました。 ありがとうございます。

すると、全ての回答が全文表示されます。
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

>オートSUMでやったのですが SUMIF関数でも無理なのですか?

m09020510
質問者

お礼

お礼が遅くなり申し訳ありません。 とても助かりました。 また質問する事があるかと思いますが 宜しくお願いします。

m09020510
質問者

補足

すみません。 エクセルも詳しくないので SUMIF関数は存じませんでした。 良かったら教えて頂けますか?? 宜しくお願いします。

すると、全ての回答が全文表示されます。

関連するQ&A