• ベストアンサー

エクセルで条件を複数選んだ合計値を出したいです。

関数初心者です。 ネットや本で調べ、試行錯誤の結果何通りか関数(数式?)を試しましたが、一番求めているものに辿り付けませんでした。 本物の表はもっと項目がありますが、簡単にすると↓です。 「    A     B    C    D    E    F  1        5/1    5/2   5/2    5/3    5/4     ←出荷日   2        あ社  い社  あ社   あ社   い社    ←客先  3 No.12345   40     20    80      20           ←出荷数  4 No.67890                   20    50     ← 〃  5        40     20    80     40    50 」    ←出荷数の合計   ↑  オーダーNo. この表から、2007年5月に出荷した全体の数量を客先別に計算したいのです。(2007年を条件にすることはそんなにこだわっていません。) 今、とりあえず成功している式は、 =SUMPRODUCT((YEAR(B1:F1)=2007)*(MONTH(B1:F1)=5)*(B2:F2=A8),B5:F5) ※A8にあたるセルには客先名が入っています。 ※日付の書式は「日付」にしました。 何が問題かというと、この表は出荷する度に横に列を増やしていくので、YEAR、MONTHの範囲(シリアル値?)を広げたいのですが、(B1:BZ1)などと列を増やしてしまうと、「#N/A」になってしまいます。 その他にも色々試しました。 (例) =SUM(IF((B1:BZ1="2007/5/*")*(B2:BZ2=A44),B5:F5)) エラーは「#VALUE!」です。 日付の書式をかえてみたり、「"=2007/5/*"」を「"5/*"」にかえてみたりすると、何らかの計算はされることもありましたが、どこをどう計算しているのか求めている合計値ではない数値が出てきました。 また、思い切って出荷日の行を増やし、上段に「月」下段に「日」と分けてしまった方が、簡単でしょうか? ご回答お待ちしています。よろしくお願いします。

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

  • ベストアンサー
  • redowl
  • ベストアンサー率43% (2140/4926)
回答No.1

サンプルの既存データの訂正は無しで、セル3カ所(A8~A10)を下記のように使用。 A8 に  数値 (1~12 の範囲)※ 後から、セルの書式設定で  表示形式を「 ○○月 」にする。 A9 に 社名( あ社、い社、・・・・) A10に、 =SUMPRODUCT((MONTH(B1:AZ1)=A8)*(B2:AZ2=A9)*(B3:AZ5)) この式は、A列内に 配置 条件1 MONTH(B1:AZ1)=A8・・・・・・A8に一致する 「月」を   B1:AZ1領域から選択 条件2 B2:AZ2=A9・・・・・・A9に一致する「社名」を   B2:AZ2領域から選択 B3:AZ5領域で、条件1と条件2 を同時に満たす 列 、総和を SUMPRODUC関数で算出。 オーダーNoの行と 月日列を増やした場合の式 (100行目,256列目 まで)  =SUMPRODUCT((MONTH(B1:IV1)=A8)*(B2:IV2=A9)*(B3:IV100)) 条件に 「年」は、組み込んでいないので、12ヶ月を1単位として使う。 (エクセルの 列の上限は 256列までなので、実質8ヶ月分まで。 Excel97になれば16384列まで)

masumu
質問者

お礼

解決しました。ありがとうございます。 月を「5」月で指定するより、セルに「5」を入れて指定する方が応用もききますよね! 勉強になりました。

その他の回答 (1)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

何らかの事情があると思いますが、質問の表は1列が1データで、横方向に追加するように作られています。 データ数が多くなったり、オーダーNo.の処理方法に疑問が残ります。 このようなデータ処理を行うときには、横方向にデータ項目を展開していった方が管理しやすいでしょう。 また、1つのデータに複数のオーダーNo.があったりすると計算が複雑になります。 下は、質問の表を縦横逆にして、出荷No.としてオーダーNo.を追加しています。 このように作ることで、ExcelのCountIfやSumIf関数、フィルタ機能、並べ替え機能、集計機能、ピボットテーブル、統合機能などが使えるようになります。 質問の表ではこのようなExcelの機能を使いづらくしており、何をするにも大変でしょう。 __A___B__C___D 1 出荷日 客先 出荷No. 出荷数 2  5/1  あ社 12345  40 3  5/2  い社 12345  20 4  5/2  あ社 12345  80 5  5/3  あ社 12345  20 6  5/3  あ社 67890  20 7  5/4  い社 12345  50

masumu
質問者

お礼

ご指摘ありがとうございます。 簡単な表で説明してしまったのですが、もうちょっと表が複雑なんです。 まずシステムからデータを落とした時点で、 オーダーNo. 保管場所 製品名 製造日 数量 入荷日 等、横一列になっているのです。 これをそのまま活かして表を作ることが目的だったので、この形になりました。 それから、出荷数だけではなく在庫数も管理しているのですよ。 こんな風です。 オーダーNo.1  ・・・・・・・・  元の数量 出荷数 在庫数    〃 (製造日違い)・・・・・  元の数量 出荷数 在庫数     〃 (製造日違い)・・・・・  元の数量 出荷数 在庫数   〃 (合計)          (小計)(小計)(小計) オーダーNo.2  ・・・・・・・・  元の数量 出荷数 在庫数   〃 (製造日違い)・・・・・  元の数量 出荷数 在庫数   〃 (合計)          (小計)(小計)(小計)   ・   ・ オーダーNo.9  ・・・・・・・・  元の数量 出荷数 在庫数   〃 (製造日違い)・・・・・  元の数量 出荷数 在庫数   〃 (合計)          (小計)(小計)(小計) 全体の合計             〔合計〕〔合計〕〔合計〕 でも確かに縦に加えていった方が簡単ですよね。 う~ん・・・。 上の表は表で作り、出荷履歴は別で作った方が楽チンになりますかね?? もう少しアイデアを絞ってみます。ありがとうございました。

関連するQ&A

専門家に質問してみよう