• ベストアンサー

同一のセルに複数の金額を追加する方法

いつも御世話になっています。 1  現在 シート名「顧客管理」と「記入」の2つがあって「記入」   に B   C   D   列に 日付  ID  売上  を入力しています。 日付は 1月から12月までで毎日入力 IDは   顧客である会社が200件程あってID化して 管理しています 売上は  毎日の売上金額 2 この時 別のシートに会社別の売上を月毎(1~12月)にまとめたい 例えば 仮にシート名を「売上」として A     B    C     D E ID    会社名  1月売上 2月売上 3月売上 ~ 001   =顧客管理!B2 150,000 002   =顧客管理!B2 70,000 003    =顧客管理!B2 000,000 ※C列~の売上売上金額(3のD列)を追加するのにどんな数式を入れればいいのでしょうか? ※1件の会社は1ヶ月で複数の売上があります。 3 イメージ (上に数字で示しています)    A B C D 01/01 001 花子(株) 100,000 01/05 001 花子(株)  50,000 01/21 002 山田(有) 20,000 01/30 002 山田(有)  50,000 誠に恐れ入りますがご教授の程、よろしく御願いします。

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

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

記入シートの日付の年月とIDを条件に売上の合計を出す関数ということですよね。 複数の条件なので SUMIF関数が使えません。変わりに使えるのがSUMPRODUCT関数ですが SUMPRODUCT関数はパソコンへの負担が大きく日々入力の作業時も動きが遅くなります。 1、ピボットテーブルを検討する。 2、記入シートに 作業列 例えば =TEXT(A2,"yymm")&B2  といれて下へコピィしておいて、顧客管理のシートの集計で SUMIF関数を利用する。 3、記入のシートの日付が日付順に並んであれば、それを利用して月の最初の行、最後の行を取得してSUMIF関数で集計する 方法などがあります。 簡単なところで 2で説明すると 記入シートの F列に =TEXT(A2,"yymm")&B2 下へコピィ 記入シートの 1月売上 は 2009/1/1 と日付を入れて、表示形式で yy"年"m"月売上" とユーザー定義をいれて表示させる。 売上シートの合計は =SUMIF(記入!$F:$F,TEXT(C$1,"yymm")&$A2,記入!$C:$C) 式をじっくり見てもらうと何をしているのかわかると思いますので参考にしてみてください。

dorasuke
質問者

お礼

何とか完成にこぎつけました。 ご指導いただいたお陰で感謝しています。 重ねてお礼申し上げます。

dorasuke
質問者

補足

誠に恐れ入りますが下記で困っています。 いずれもどのセルでしょうか? 私はそれぞれのセルに入力しましたがうまくいきません。 1 シート「売上」C1~N2 記入シートの 1月売上 は 2009/1/1 と日付を入れて、表示形式で yy"年"m"月売上" とユーザー定義をいれて表示させる。 2 シート「売上」C2 売上シートの合計は =SUMIF(記入!$F:$F,TEXT(C$1,"yymm")&$A2,記入!$C:$C) よろしく御願いします。

その他の回答 (3)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんにちは! 当方使用のExcel2003での回答です。 Excel2007にはSUMIFS関数があると思いますが、使った事がないので SUMPRODUCT関数を使用した一例になります。 確かにデータが多いとPCに負担がかかると思いますが、敢えて作ってみました。 ↓の画像を参考に回答させていただきます。 IDと日付だけのデータだという事なので Sheet2のB2セルに=VLOOKUP(A2,Sheet1!$E$2:$F$6,2,0) と入れてオートフィルで下へドラッグ (とりあえず、顧客名を表示させます) 次にC2セル =SUMPRODUCT((MONTH(Sheet1!$A$2:$A$10)=MONTH(Sheet2!$C$1))*(Sheet1!$B$2:$B$10=Sheet2!A2),Sheet1!$C$2:$C$10) D2セル =SUMPRODUCT((MONTH(Sheet1!$A$2:$A$10)=MONTH(Sheet2!$D$1))*(Sheet1!$B$2:$B$10=Sheet2!A2),Sheet1!$C$2:$C$10) E2セル =SUMPRODUCT((MONTH(Sheet1!$A$2:$A$10)=MONTH(Sheet2!$E$1))*(Sheet1!$B$2:$B$10=Sheet2!A2),Sheet1!$C$2:$C$10) というように12月まで入れていきます。 (顧客の方がデータが多いので顧客の方へオートフィル出来るようにしています) あとは1月~12月までのセルを範囲指定した後に オートフィルのフィルハンドルマーク(+)のところでダブルクリックしています。 以上、参考になれば幸いですが、 的外れの回答なら読み流してくださいね。m(__)m

dorasuke
質問者

お礼

ご協力頂き有難うございました。 今後ともよろしく御願いします。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

質問の説明が長い割りに、判りにくい。 ーー 最終希望形は(ここは明確) 01/01 001 花子(株) 100,000 01/05 001 花子(株)  50,000 01/21 002 山田(有) 20,000 ・・ のように得意先別(ID別)+日付別の表だろう、そして計数(売上)は日別に集計したいのだろう。 だったら、ID->顧客名の列を作ってVLOOKUPででも顧客名を振る(あくまで見やすくするため)。 後は (1)ピボットテーブルでやるのがが早いでしょう 列に顧客ID(顧客名)+日付、データが売上です。 (2)VBAでも10行ぐらいのコードでやれる。 顧客+日付でソートし、日付が変わる(同じ間=日付が同じ行)まで足しこみ、変わると、加算していた、その前(日)の集計を吐き出す。 (3)関数で 顧客+日付のv重複(行)のないデータがシートに、作れれば、2条件(顧客+日付)の加算でSUMPRODUCTやSUMIFS(2007)で可能。 ーー ID+日付のユニーク(重複ない)なリスト (関数でも作れないことはないが、式が複雑や作業列が必要で簡単ではない) 即時反応性は犠牲になるが、操作でやるのが早い。 例データ A-D列 D列は使わなくてよいようだ。 日付 ID 売上額 キー 2009/3/1 01 100 3987301 2009/3/3 02 200 3987502 2009/3/8 05 300 3988005 2009/3/1 01 400 3987301 2009/3/9 05 500 3988105 2009/3/5 01 600 3987701 2009/3/3 02 700 3987502 ーー F1:G2 普通は条件を入れるところ 日付 ID   <--何も入れない ーーー データーフィルターフィルタオプションの設定ーダイアロウグ画面で 選択した範囲 オン リスト範囲 $A$1:$B$8 検索条件範囲 $F$1:$G$2 抽出範囲 $I$1:$J$8 重複するレコードは無視する チェック OK 結果 I、J列 日付 ID 2009/3/1 01 2009/3/3 02 2009/3/8 05 2009/3/9 05 2009/3/5 01 これをJ列でソートして、SUMIFSやSUMPRODUCTの条件に使う。 説明が長くなるので、SUMIFSやSUMPRODUCTはGOOGLEで照会のこと。 (このコーナーで毎日、質問が有る事項。) アクセスがあれば、そちら絵データを送って(簡単)処理する人も 有るだろう ーー 質問が課題を丸投げ的で、ピボットテーブルなど出てこないところを見ると、このクラスの課題をやるには、エクセルの経験が不足していると思う。

dorasuke
質問者

お礼

ご協力頂き有難うございました。 今後ともよろしく御願いします。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

内容を推敲していたら、かぶってしまいました。折角作成したので投稿しておきます。No.1さんの方法の方が軽いです。 複数条件付集計に当たる課題ではないでしょうか。 ピボットテーブルでやるのが良いと思いますが、どうしても関数でやりたければ、下記で可能だと思います。データが複数年にまたがる場合などは全く考慮しておりません。(ピボットテーブルならグループ化の設定で簡単ですが) 記入シートの日付、ID、売上の列のデータが存在する範囲にそれぞれ、日付、ID、売上という名前をつける。 名前は、範囲がデータ数に応じて動的に変化する様に設定しておく。 http://office.microsoft.com/ja-jp/excel/HA011261151041.aspx 顧客管理シートにおいて、   A  B     C      D 1|ID |会社名|1月売上|2月売上|3月売上|~ 2|001||150000|0|0| 3|002||70000|0|0| 4|003||0|0|0| C2の式:{=SUM(IF((MONTH(日付)=ASC(LEFT(C$1,FIND("月",C$1)-1))*1)*(ID=$A2),売上))} 以降、下方、右方に複写 ※配列数式として入力のこと(ctrl+shit+Enter) 「1月売上」という見出しにこだわらず、単に「1」であればASC云々は簡略化できます。 また、IDが多数にのぼると、重くなると思いますので、その際はピボットテーブルをご採用下さい。

dorasuke
質問者

お礼

ご協力頂き有難うございました。 今後ともよろしく御願いします。