エクセル関数:複数の条件の合う数値の合計

このQ&Aのポイント
  • エクセル関数を使って、複数の条件の合う数値の合計を算出する方法について質問があります。
  • エクセルを使って納品の数量を管理したいと考えているが、複数の条件が合致する数値の合計を計算する方法がわからない。
  • Sheet1に入力したデータを元に、Sheet2で納品予定数を表示する関数を使いたいが上手くいかない。VLOOKUPやSUMIFSを試したがうまくいかなかった。
回答を見る
  • ベストアンサー

エクセル関数:複数の条件の合う数値の合計

可能かどうかもわかりませんが。。。 納品の量を管理するためにエクセルを利用したいと考えております。 Sheet1   A   B    C     D   E   ............ 1 出荷先 納品日 りんご みかん いちご ----------------------------------------- 2倉庫  12.01  10    0    5 3八百屋 12.02  0     4    3 4お店ア 12.05  3     2    8 5顧客A  12.03  3     5    0 6顧客B  12.05  0     15    0 7お店イ 12.02  2     2    2 . . . . >>>>>>>>>>>>>>>>> Sheet2 A    B    C    D  ............ 1納品日 りんご みかん いちご ----------------------------------------- 212.01 312.02 412.03 512.04 612.05 . . . Sheet1に入力した内容を、Sheet2で管理できないものかと考えております。 例:Sheet2のセルB2に「12月1日」の「りんご」の納品予定数を表示できないものでしょうか。即ち、Sheet1より「12月5日」の「みかん」の納品数は「2」+「15」で17と関数で計算する方法はないものでしょうか。 VLOOKUPやSUMIFSなどをが使えるのかとも考え、色々と調べてみましたが、どうしてもうまくいきません。 どうぞ宜しくお願い致します。

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

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.6

>商品や日付が増えてくるので、範囲固定ではなく設定できればいいのですが。 >もちろん必要な「$」は残し、どうにかしてオートフィル用の計算式ができないかどうか挑戦してみます。 元データのテーブルのデータ数が多いと計算途中で使われるシステムメモリー(RAM)が不足して正しい値を算出できなくなります。 ExcelのバージョンとWindows OSの種別によって限界があります。 特に配列の計算では膨大な計算を行わなければならないため長時間を要することもあります。 従って、現在のデータの列数に空欄列を1~2列加え、行数も同様に1~2行加えた範囲に止めた数式を使ってください。 元データ側(Sheet1)の行数や列数を増やす時は空欄行または空欄列の前に行または列を挿入することで対処します。 集計側(Sheet2)では数式の参照範囲が増加したとき自動的に変更されます。 集計側の行または列を増やすときはオートフィルで数式をコピーすれば良いでしょう。 =IF(OR(A2="",B1=""),"",SUMPRODUCT((Sheet1!$C$2:$G$10)*(Sheet1!$B$2:$B$10=$A2)*(Sheet1!$C$1:$G$1=B$1))) G列の前に1列挿入した結果は次の数式になります。 =IF(OR(A2="",B1=""),"",SUMPRODUCT((Sheet1!$C$2:$H$10)*(Sheet1!$B$2:$B$10=$A2)*(Sheet1!$C$1:$H$1=B$1))) 更に10行目の上に1行挿入すると次のようになります。 =IF(OR(A2="",B1=""),"",SUMPRODUCT((Sheet1!$C$2:$H$11)*(Sheet1!$B$2:$B$11=$A2)*(Sheet1!$C$1:$H$1=B$1))) これらの対策でより効率的な運用ができるでしょう。 知識を積んで応用力を高めてください。

giapponte
質問者

お礼

色々と勉強になりますコメント、ありがとうございます! SUMPRODUCT、少し学んでみます!

その他の回答 (5)

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

No.3です。 Sheet1とSheet2の「商品」の並びが異なるというコトですので、 もう一度画像をアップします。 Sheet2の1行目(商品)は手入力するとします。 画像ではSheet2のB2セルに =IF(OR($A2="",B$1=""),"",SUMIF(Sheet1!$B:$B,$A2,OFFSET(Sheet1!$A:$A,,MATCH(B$1,Sheet1!$1:$1,0)-1,,1))) という数式を入れ、列・行方向にフィルハンドルでコピーしています。 これで列方向の並びがバラバラでもちゃんと表示されると思います。 ※ Sheet2の1行目項目がSheet1にない場合はエラーとなります。m(_ _)m

giapponte
質問者

お礼

恐れ入ります。 SUMPRODUCTについてちょっと勉強してました。いやはや、すごい計算式、ありがとうございます。 エクセルを仕事で使っていた時期は独学である程度学んだのですが、ここ数年、エクセルから離れてまして。。。 計算式が出来た時の喜びは一入ですね。 今回も、出来るだろうと色々と右往左往、昔使ったLOOKUPなんて引っ張ってきて色々考えましたが、私には無理でした。 お礼申し上げます!

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.4

>VLOOKUPやSUMIFSなどをが使えるのかとも考え、色々と調べてみましたが、どうしてもうまくいきません。 SUMPRODUCT関数が最も適しています。 貼付画像はExcel 2013で検証した結果です。 Sheet1のB列とSheet2のA列は日付のシリアル値です。(形式は[$-411]m.d) Sheet2!B2=SUMPRODUCT((Sheet1!$C$2:$E$7)*(Sheet1!$B$2:$B$7=$A2)*(Sheet1!$C$1:$E$1=B$1)) 右と下にオートフィルでコピーしました。 実情に合わせてセル範囲を変更してください。 尚、エラーチェックは行っていませんので必要なときはExcelのバージョンに対応した方法で処理してください。

giapponte
質問者

お礼

ありがとうございます。 SUMPRODUCT関数、知りませんでした。。。勉強不足でした。 商品や日付が増えてくるので、範囲固定ではなく設定できればいいのですが。もちろん必要な「$」は残し、どうにかしてオートフィル用の計算式ができないかどうか挑戦してみます。 Sheet2!B2=IF($A2="","",SUMPRODUCT((Sheet1!$C$2:$IV$65536)*(Sheet1!B:B=$A2)*(Sheet1!$C$1:$IV$1=B$1))) みたいになるのかなぁ。。。

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

こんにちは! Sheet1とSheet2の商品の列の並びが同じであれば No.1さんが回答されているようにSUMIF関数だけで対応できます。 質問では「日付」の列が「12.01」のようになっていますが、 シリアル値なのでしょうか? それはさておいて・・・ ↓の画像のように上側がSheet1・下側がSheet2とします。 両Sheetとも日付の列は同じ入力方法(シリアル値でなくても同じデータがある)とします。 Sheet2のB2セルに =IF($A2="","",SUMIF(Sheet1!$B:$B,$A2,Sheet1!C:C)) という数式を入れ列・行方向にフィルハンドルでコピー! これで画像のような感じになります。m(_ _)m

giapponte
質問者

お礼

ご回答ありがとうございます。 おっしゃる通りです。列の並びが同じであれば、ご回答頂いた式でオートフィルすれば。。。 言葉不足で申し訳ございません、ただ、仕事の能率アップで、列の並びをSheet2で変えることが出来ればと思っております。 butter1122さんにもお返事させていただきましたが: 行1の「商品」が多いため、Sheet2の「行1」のとある商品を検索の"条件"として計算する方法はないのかと思った次第です。 例えば、私の例ですとSheet1の行1は列Cから、りんご、みかん、いちご、のように並んでいますが、Sheet2で同様に並べないでもどうにか計算できないものでしょうか。 Sheet1、Sheet2、もちろん商品の記載は同じになりますが、列の「並び方」は2つのシートで変えることが出来れば仕事の能率が上がるので、上記のように、商品を検索の"条件"として計算する方法はないのかと思った次第です。 Sheet1は表記の通りで、Sheet2の行1を列Bからりんご、いちご、みかん、とした場合、オートフィルを使用できず(縦のオートフィルは使えるのでしょうが)、列ごとに関数を割り当てないとなりません。

回答No.2

すみません、先ほど回答した者ですが補足です。 数式の中のA5 の部分は集計したい日付が入力してあるセルです(^^♪

giapponte
質問者

お礼

はい、了解しました。 ありがとうございます。

回答No.1

それだとSUMIFでいけると思いますが・・・ 例えばsheet1のA1からA7に日付が入っていたとして、 B1からB7にみかんの数字が入っていたとします。 =SUMIF(Sheet1!A1:A7,Sheet1!A5,Sheet1!B1:B7) となります。 SUMIFSはセルの個数なので数字の合計値ではありません(^^♪ ここだけできてもまた疑問は出てくるでしょうからパソコン教室にでも通うことをお勧めします(#^.^#)

giapponte
質問者

お礼

早速、ご回答ありがとうございます。 説明不足で申し訳ございません。列1の「商品」が多いため、Sheet2の「列1」のとある商品を検索の"条件"として計算する方法はないのかと思った次第です。 例えば、私の例ですとSheet1の列1は行Cから、りんご、みかん、いちご、のように並んでいますが、Sheet2で同様に並べないでもどうにか計算できないものでしょうか。 Sheet1、Sheet2、もちろん商品の記載は同じになりますが、行の「並び方」は2つのシートで変えることが出来れば仕事の能率が上がるので、上記のように、商品を検索の"条件"として計算する方法はないのかと思った次第です。 Sheet1は表記の通りで、Sheet2の列1を行Bからりんご、いちご、みかん、とした場合、オートフィルを使用できず(縦のオートフィルは使えるのでしょうが)、行ごとに関数を割り当てないとなりません。 お手数をおかけし、言葉が足らずに申し訳ございませんでした。

giapponte
質問者

補足

列と行を間違えました。。。 説明不足で申し訳ございません。行1の「商品」が多いため、Sheet2の「行1」のとある商品を検索の"条件"として計算する方法はないのかと思った次第です。 例えば、私の例ですとSheet1の行1は列Cから、りんご、みかん、いちご、のように並んでいますが、Sheet2で同様に並べないでもどうにか計算できないものでしょうか。 Sheet1、Sheet2、もちろん商品の記載は同じになりますが、列の「並び方」は2つのシートで変えることが出来れば仕事の能率が上がるので、上記のように、商品を検索の"条件"として計算する方法はないのかと思った次第です。 Sheet1は表記の通りで、Sheet2の行1を列Bからりんご、いちご、みかん、とした場合、オートフィルを使用できず(縦のオートフィルは使えるのでしょうが)、列ごとに関数を割り当てないとなりません。 お手数をおかけし、言葉が足らずに申し訳ございませんでした。

関連するQ&A

  • Excelでどのような関数を使えばいいでしょうか。

    関数について教えて下さい。 Excelで、同じBook内に以下のような2シートがあるときに、 (Sheet1)    A   B    C   D     1  1  あい   12  りんご 2     うえ   34  みかん   3     おか   56  イチゴ 4  1  おか   78  イチゴ (Sheet2)    A   B    C    D     1     あい   11   りんご 2     うえ   34   みかん   3     おか   78   イチゴ 4     うえ   34   みかん  Sheet2のA列にSheet1にあるデータを入れたいのです。 まず、列B,C,Dのそれぞれのデータが横に3つ一致するものを探して 横3つのデータが同じなら、Sheet2のA列に、 Sheet1のA列にあるデータをシートBにも持ってくる、 というようなイメージです。 (Sheet2)    A   B    C    D     1     あい   11   りんご 2     うえ   34   みかん   3  1  おか   78   イチゴ 4     うえ   34   みかん      ↑このようにしたいのです。 A列にどのような関数を入れればいいのでしょう。 (A列にあるのは1か空欄かのどちらかです。 同じ3つの組み合わせで、1の場合と空欄の場合両方があることはありません。) また、Sheet2には、A列に1とついた行に色を付けたいのです。 例えば、上記の例ですと Sheet2のB3:D3のセルに色をつけたいのです。 関数や条件付書式などで、できますでしょうか。

  • Excel2003 複数の条件を満たすデータを抽出する関数を教えて下さ

    Excel2003 複数の条件を満たすデータを抽出する関数を教えて下さい! 下のデータで、A列でB、B列で赤を選んだ人は「みかん」という「みかん」を抽出する関数を教えて頂けませんでしょうか? データシートとは別に集計シートを作成しています。 お忙しい中恐れ入りますが、ご教示下さいますようお願い申し上げます。。。 ●データ A B C 1 A 赤 みかん 2 B 赤 りんご 3 C 白 いちご 4 B 青 いちご 5 D 赤 みかん 6 A 青 みかん 7 C 黄 りんご 8 E 赤 バナナ

  • Excelで複数条件で抽出した複数データを出力

    Excelで複数条件で抽出した複数データを出力したい Shett1のセルAとセルBの複数条件で、Sheet2を検索し一致したSheet2のセルCを Sheet1の該当するセルCに入れたいのです。 それを関数でするのはどうしたらいいのでしょうか? Sheet1 A B NAME ID(タイトル) いちご A01 いちじく A02 かき B01 すいか C01 なし D01 ぱいなっぷる E01 ばなな E02 ぶどう F01 みかん G01 めろん H01 もも I01 りんご J01 Sheet2 A B C 名前 ID 漢字(タイトル) みかん G01 蜜柑 いちご A01 苺 ぶどう F01 葡萄 りんご J01 林檎 もも I01 桃 かき B01 柿 なし D01 梨 すいか C01 西瓜 いちじく A02 無花果

  • エクセルの関数についてです、よろしくお願いします

    エクセルの関数についてです、よろしくお願いします。 sheet1に以下の様なデータが何百行とあります。 A B C D E 日付  顧客名  品名  数量  金額 上記のsheet1のデータを基にsheet2へ抽出して転記する ものを作りたいと考えています。 具体的に言いますと sheet2のA1に2014/11/21、 B1に2014/12/20、 C1に ○○商店と入力するとその下に A      B     C     D 日付   品名   数量 金額 2014/11/23  りんご 5 750 2014/11/28  みかん 2 300 2014/12/2   いちご 3 600 2014/12/10  りんご 5 750 sheet1のリストから該当するものを引っ張ってきて sheet2へ表示させるものです オートフィルタ等でなく、関数で出来ないでしょうか お詳しい先生方よろしくお願いします。

  • エクセル関数式で部類ごとの平均を求める。

     初めまして、よろしくお願いします。    A   B   C   D 1リンゴ      6 2ミカン      2 3イチゴ      8 4ミカン      2 5リンゴ      4 6ミカン      6 7イチゴ      6 8 9 という表があります。この表のA9に”リンゴ”と打ち込むと、B9にリンゴの平均値”5”が出力されるようにしたいと思います。表の部類と値、数は変化します。A9の部類を拾い出して平均を求めることのできる関数式を教えて頂きたく、よろしくお願いします。

  • エクセル関数 データの抽出について

    エクセル2010 重複データの抽出。 重複データの抽出方法をご教示ください。 抽出先はシート1のA列A3~抽出データの分だけ リストはシート2のB2:AB32まで フィルターオプションなども使ってみたのですが どうも上手くいきません。 どなたか知恵をお貸しください。 方法はできれば関数だといいのですが(データが増えてもいいように) できなければ他の方法でもいいです。 VBAなどは全くの初心者なので出来れば避けたいのですが… シート2     A    B   C    D~AB32 1  "" 2 いちご ばなな いちご りんご 3 みかん いちご ばなな いちご 4 りんご ばなな いちご みかん 5 みかん いちご ばなな りんご 6 ばなな ばなな りんご いちご : : 32 シート1(重複データなし)  A 1  "" 2  "" 3 いちご 4 みかん 5 りんご 6 ばなな 7 : : 抽出リストのデータはシート2のB2:AB32にぎっしり入っています。 宜しくお願い致します。

  • エクセル 複数条件 VBA

    VBAと関数の両方を教えていただきたいです。 シート”DATA”に以下の入力フォームがあります。 A列には日付 B1には”りんご”、B2以降には数量 C1には”みかん”、C2以降には数量 D1には”なし”、D2以降には数量 シート”照会”に以下の照会画面があります。 B1には開始日、D1には終了日 A2には”りんご” A3には”みかん” A4には”なし” B2以降はそれぞれの開始日から終了日までの個数が入るようにしたいのです。 例えば、シート”DATA”に毎日10が入力されていて、シート”照会”のB1に1/1、D1に1/3と入力されたら30、B1はそのままでD1が1/10なら100と果物ごとに表示されるようにしたいのですが、どうすればよいでしょうか。 よろしくお願い致します。

  • エクセルで複数の条件からデータを抽出する方法

    次のような表において、A列の入荷日、B列の製品名から、別表に月別に製品別毎の入荷数及び合計金額を求める関数を教えて下さい。   A         B    C(個数) D(単価)         2013/2/15   みかん    100     50 2013/2/30   みかん    200     50 2013/3/2    りんご     50     70 2013/3/4    ぶどう    150     40 2013/4/3    いちご    100     50    よろしくお願いします     

  • EXCELのマクロで条件2つでの合計

    現在シート1に以下のようにあります。 sheet1   A    B    C   D   E 1 品名  日付  担当 個数 チェック 2 いちご 1/10  伊藤 10   ○ 3 りんご 1/15  山田  2   ○ 4 ばなな 1/10  伊藤  5   × 5 いちご 1/20  伊藤  10  △ 6 いちご 1/7   山田  5   ○ 7 ばなな 1/8   江口  5   △ 8 りんご  1/4  江口  4   ○ 9 りんご  1/18 伊藤  5   ○ 10 ばなな  1/8  伊藤  6   × 11 いちご  1/20 江口  4   ○ これを以下のようにシート2にしたいです。 sheet2   A    B    C   D   E 1 品名  日付  担当 個数 チェック 2 いちご 1/10  伊藤  20  ○ 3 りんご 1/15  山田  2   ○ 4 ばなな 1/10  伊藤  11  × 6 いちご 1/7   山田  5   ○ 7 ばなな 1/8   江口  5   △ 8 りんご  1/4  江口  4   ○ 9 りんご  1/18 伊藤  5   ○ 11 いちご  1/20 江口  4   ○ 条件は、「品名」と「担当」が同じならば個数を合計してシート2にコ記すということです。 また、「日付」と「チェック」は照合した一番上の行の「日付」と「チェック」になります。 例えば、2行目と5行目は「いちご」と「伊藤」で同じなので合計を10+10で20にします。 「日付」と「チェック」は2行目の方が上なので「1/10」と「○」になります。 以上をマクロでやりたいです。 マクロの勉強中なので色々なやり方を知りたいです。 よろしくお願いします。

  • <Excel>データベースの中から特定の要件を満たすデータを抽出し、他のシートへ転記

    Sheet1に以下のデータがあるとします。  <納品データ>   A      B      C      D 1 顧客   商品コード  品名    数量   2 ○○    0001    りんご   100 3 △△    0002    みかん   500  4 □□    0003    いちご   200 5 △△    0003    いちご   300      6 ○○    0003    いちご   100    上記データを基にSheet2へ顧客別の納品書を作成します。 納品書の雛形は以下のようなものです。 <顧客別納品書>   A     B     C     D 1         △△   様(敬称)   2 商品コード   品名     数量 3  0002     みかん    500    4  0003     いちご    300      顧客名(上記例だと”△△”)をB1に入力すると、Sheet1を検索しに行き、該当顧客の納品データを抽出し、Sheet2の顧客別納品書に転記するというものを作りたいと考えております。 商品コードと数量さえ抽出→転記できれば、「品名」は別途「品名リスト」等を作成しておき、そこから引っ張ってくれば良いと考えています。 作成要件としては、、、  1.すべて関数による作成  2.オートフィルタ等の使用による手作業は不可 Excelをまったくわからない人でも顧客名だけを入力すれば納品書を作成できるようなレベルのものを考えています。また、VBAを使わないのは私自身が理解できないからです。 恐れ入りますがよろしくお願いします。

専門家に質問してみよう