• 締切済み

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

  • 偶数セルの合計・・・ってできますか?

    こんばんは。 EXCEL(2003,OS WindowsXP)で教えていただきたいことがあります。 例えば A列に1から順番に 日付,数字,日付,数字・・・ と何行も入力したとします。 A1 が1月1日 A2 が2,000 A3 が2月3日 A4 が1,000 こんな感じです。 このときに,A5にA2とA4の合計をあらわすには A5のセルに「=A2+A4」と打てば良いのですが, そのほかのやり方がありませんでしょうか。 =sum(A1:A4) とすると,日付の部分の数字も合計されてしまいます。 =sum(A2,A4) とする方法は分かります。 (しかし大量になるとエラー表示されるのですがなぜでしょう?個数制限?) たくさんの量になってくると,1つ1つ選択していくことが非常に面倒です。 何か良い計算式,関数などありませんでしょうか。 どうぞよろしくお願いいたします。

  • 【Excel VBA】特定の列で時間を入れているセルだけ合計して数式をセルにいれたい

    Excel VBA初心者です。 特定の列の各セル(B列とします)に時間(数字)、件数(数字)、文字列(○や×)が入っています。 この中でランダムな位置に入っている時間(数字)のみ拾い出し、合計欄(セルB20とします)に「数式(例)=sum(b3,b6,b8,b13,b18)」を入れたいのですが、マクロの組み方がわかりません。上記の特定のセルを抽出するところまではできたのですが。 マクロの組み方をご教授願えますか。

  • Excel VBA セルの指定方法について

    Excell2013です。 次のような表(一部)があります。   日   項目      額       分類   12 ノート 250 3 この、250を、別表の分類3の列(H列)の12日の行(15行)のセルに、そこにすでに値があれば250との合計値として入力したいのです。 データによって日付も分類も違いますので、マクロで自動的に入力したいのですが、どうもよくわかりません。 このような場合のVBAでの入力先セルの指定のしかたをどうすればよいのかどなたかご教示ください。

  • 中国人の経営する中華料理店について

    こんにちは。 今日中国人の方が経営する中華料理店に行ってきました。 餃子,ラーメン,春巻きは非常に美味しかったのですが,チャーハンと豚の角煮と天津飯がだいぶしょっぱかったです。 中国国内でも料理はしょっぱいのですか?

  • エクセル 特定のセルの合計値を出す方法

    たとえば、A3~A20まで数値データ(1)が入っているとします。次の行のA21は空白、A22~A30はデータ(2)が入っています。 1日にA3~5、2日にA6…と、順々にデータを入れていくのですが、常に入力したところまでの合計がほしいです。 が、データの最後がA列のどこになるかはその時によって違うので、SUM関数で指定できません (=SUM(A3:A20)のA20がA19になるかA22になるかわからないので、データがすべて入れ終わるまで範囲指定ができないのです) また、データ(1)がすべて入れ終わってから、一行空けてデータ(2)を入れ始めます。 データ(1)と(2)の間には必ず1行空白を入れるので、A3から次の空白のセルまでの合計を出そうとしたのですが、どうやっても出来ません。 この場合、自動的にA1にデータ(1)の合計値を出すにはどうしたらいいでしょうか? また、データ(2)の合計値をA2に出すことは出来るでしょうか? ややこしい質問で申し訳ありませんが、ご教授ください。

  • ある値を越えたセル番地の取得関数

    ご教示ください。 セルA5から下に月の日付を入力しています。 またセルB5からE5には、それぞれ時間が入力されていて、合計をSUM関数でF5に計上しています。 BからEに入る時間は毎月変わってきますが、合計時間ある時間を越えたセルの値を取得するような関数はあるのでしょか。 (合計はBCDEと順に足し、それに次の行のBCDEと足していきます。) 例 次の場合で、10時間を越えた初めてのセルをF4に取得したい     場合は、D6を表示してくれるような関数です。    A  B   C   D   E   F    4                   D6 5 1日 1:15 2:00 2:30 1:45  7:30 6 2日 1:30 1:45 4:15 3:45 11:15 7 3日 ・      ・  どなたか、よろしくお願いいたします。        

  • エクセル2010で合計の一行上に行の追加をしたい

    会社に提出する精算書を作っています。 ボタンフォームで「行を追加する」を押すと 合計のある一行上の、日付から始まる9項目の空行がコピーされる、 というマクロを作りたいのですが Range("合計").EntireRow.Insert では入りません。 行には行番号はふっておらず、9項目すべて空で 合計行の金額セルにのみSumが入っています。 シートには結合セルはありません。 合計行より下には印鑑を押す欄などがあり、 セル幅や書式設定はそのままにしておきたいのですが 何かよい方法はありませんでしょうか。 どうぞよろしくお願い致します。

  • Excelで別シートの合計を1箇所に持ってくる

    Excelで別シートにある1つのセル内に、 同じ日付のものは合計して入力するような方法はございますでしょうか? たとえば、Asheetで1日というならびに3つの違う金額が入っていた場合、Bsheetの1日という1つのセル内に、3つを合計して入力する。 Asheet 1日 1995 1日 7200 1日 1200 Bsheet 1日 10395 どうか教えてください。 よろしくお願いいたします。

  • エクセル 最新日付以外のデータを合計する

    下表があるとしまして、 氏名 日付 買上金額 鈴木 5月5日 10 鈴木 5月6日 60 鈴木 5月7日 100 鈴木 5月9日 400 田中 5月4日 100 田中 5月7日 200 山田 5月1日 600 山田 5月2日 200 山田 5月3日 300 1970 氏名毎に、最新日付以外の合計を計算したいのです。 この場合、鈴木さんが170 田中さんが100 山田さんが800の合計1070がそれぞれの氏名の最新以外データの合計となりますが、これらを自動的に計算できないでしょうか? よろしくおねがいします。

  • Excelです。複数シート同一セルの合計

    Excelで日計表みたいなものを作っています。 A-1に日付 A-2に醤油ラーメン  B-2に売上金額¥2,530 A-3に味噌ラーメン  B-3に売上金額¥1,830 A-4に塩ラーメン   B-4に売上金額¥2,450 のような表が毎日繰り返されています。3月なら定休日の水曜を除いて26のシートがあります。 この味噌ラーメンの月合計を出すにはどうしたら良いのかお知恵を貸して下さい。B-2の3月の合計ということで・・・ ※架空でラーメンやさんの売り上げにしてますが、本当は違いますのでご了承下さい。