• ベストアンサー

エクセルのMAX関数を複数条件で

エクセルのMAX関数を下記のような複数条件をつけて 使いたいのですが、自分で式を書いてもうまくいきません。 アドバイスをよろしくお願いします。 A1に「部署名」、B1に「受注個数」、C1に「受注日」と見出しをし (A2:C9)にデータを入力した表があるとします。 部署名には営業1部、営業2部、営業3部のいずれかが入力されていて、 受注日には6月22日と、6月23日のいずれかの入力があるとします。 この表で「営業1部」であり、「6月22日」のものである受注個数の 最大の値を返したいのです。 日付「6月22日」は別途(E2)に参照用として入力したものを使いたいです。 =MAX(IF(AND(A2:A9="営業1部",C2:C9=E2),B2:B9,"")) これではダメでしょうか。 初歩的ですみません、よろしくお願いいたします。

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

  • ベストアンサー
  • cerberos
  • ベストアンサー率50% (420/830)
回答No.2

DMAX関数を使うことで、可能です。 (配列数式を使う方法もありますが、他にも流用したいという要望もあるようですので  こちらのほうがよいでしょう) DMAX(Database,フィールド,Criteria) http://excel.onushi.com/function/dmax.htm

makoshow
質問者

お礼

ご回答ありがとうございます。 上記と全く同じ検索条件欄を、DSUM関数用に設けておりました! そのままMAX値を求めるのにも使えたのですね。 そこまで考えが至りませんでした。 早速活用しようと思います!

その他の回答 (3)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

いちばん簡単なのはこういうときの定番のSUMPRODUCT関数ではないでしょうか? A列が営業1部に等しく、C列がE2に等しいもので、B列にある数値の最大値なら =SUMPRODUCT(MAX((A2:A9="営業1部")*(C2:C9=E2)*B2:B9)) と入力するだけです。

makoshow
質問者

お礼

ご回答ありがとうございます! 試してみたところ、これで最大値の個数を カウントできるようでした。 SUMPRODUCTも色々な場面で使えそうですね。 他の関数と組合せて使ったことがなかったので 大変勉強になりました。 ほかの関数ともあわせて応用してみようと思います。 ありがとうございました。

  • takesun
  • ベストアンサー率40% (22/54)
回答No.3

一応、配列数式での方法もご紹介しておきます。 任意セルへ =MAX((A2:A9="営業1部")*(E2=C2:C9)*(B2:B9)) と入力して、ctrl+shift+enterです。

makoshow
質問者

お礼

ご回答ありがとうございます。 ctrl+shift+enterで入力すると{}がつくのですね。 やってみました。 しかし私の入力の仕方がまずいのか 何度やっても今回はこの式を入力すると セルには「0」値が返るのです。 実際に私が苦戦している式は、質問文の表のものと違って、 シートをまたいだセルを参照するのですが それがいけないのか、私のデータベースの作り方が悪いのか MAX・MINだけ、なぜか思い通りにいかないのです・・・ 他の関数はちゃんと動くのですが・・・ 配列数列も、もっと勉強しなければなりませんね。 次の機会にはきっとマトモに式が働くよう頑張ります!

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

こんばんは! 関数でないとダメですか? 一例ですがオートフィルタとSUBTOTAL関数を併用すれば出来ると思います。 ↓の画像で C11セル =SUBTOTAL(4,B2:B9) という数式が入っています。 これでオートフィルタの 「営業1部」と「6月22日」で抽出すれば、その最大値が表示されます。 尚、この場合E2セルの「6月22日」は不必要になりますけど・・・ 余計なお世話かもしれませんが 数式内にある「4」というのは最大値を求める集計方法です、 他に「9」であれば合計を求める事になります。 等々、他にも色々集計方法がありますので、 SUBTOTAL関数で検索してみてください。 以上、参考になれば幸いですが、 的外れの回答なら読み流してくださいね。m(__)m

makoshow
質問者

お礼

早速、分かりやすいご回答ありがとうございます。 実は、どうして関数でなければダメかというとですね、 「ちょっとの入力で誰がやっても色んな資料を作成できる」 という裏の仕組みを作らなくてはいけなかったのです。 E2の「6月22日」を、その「ちょっとの入力」のキーに しようかな、と思っておりましたので・・・ 説明が至らず、本当に申し訳ございませんでした。 でも「4」で最大値、「9」で合計は知りませんでした。 集計方法を指定できるのですね。 大変、勉強になります。 少しでも多くのワザを身に着けなくてはいけないところに、 いいお知恵を教えてくださって、ありがとうございました。 覚えて使ってみます!

関連するQ&A

  • EXcel関数でAとBとCを満たしかつEの条件を

      受注日  発注NO  商品名   数   出荷日    A      B      C     D     E 1  1/5    1234    ビール    1     1/10 2  1/10   1235    ビール    5     1/20 3  1/12           酒      3     2/1 4        0345     ワイン   2     1/30 5  1/15   0256    ビール    5     2/10 上の表から受注日Aがあり(A1:A5<>””)、発注NoBがあり(B1:B5<>””)、商品名Cがビール(C1:C5=”ビール”)、出荷日Eが今月以降(2月以降)の物の数Dの合計を求めたい。  A5,B5,C5、E5で”5”

  • 複数条件の個数をカウントしたい

    例として下記のような表があります。 A列には年月日、B列にはコード、C列には現在の状況が入力されています。 □   A      B     C 1  受注年月日  コード   状況 2 2006/1/17    A-1    確定 3 2006/1/20    A-1    キャン 4 2006/1/30    C-2    待ちち 5 2006/2/6    C-3    キャン 6 2006/3/7     B-1    確定 7 2006/4/25    A-1   キャン 8 2006/4/28    B-1     確定 1月受注の確定のデータ個数を数えたいのですが、DCOUNTではなく、配列関数でしようとしています。 {=SUM(IF($A$2:$A$8<"2006/2/1",IF($C$2:$C$8="確定",1)))} と入れています。 結果は1なはずですが、3という結果になります。 後半条件の確定の個数のみ数えているようです。 何か間違いがあるのでしょうか? またもっと簡単な違う方法があれば教えていたきたいと思います。 よろしくお願いいたします。

  • エクセルでIFを使った関数

    エクセルで 品番 材料名   個数   品番   個数   材料 A  ■ー555   10   A(1)  40(2) (3) B  ▲ー100   50 C  ◎ー200   30 D  ▲ー100   20 E  ◎ー200   40 A  ■ー555   30 上記のような表があり、(1)に品番を入力すると (2)にはSUMIFを使って個数がでてきます。 表に品番Aというものがひとつしかないと限らないので、 あわせた個数がでてくるようになっています。 問題は(1)に品番を入力したときに(3)に品番に見合った材料をでてくるようにしたいのです。 IF関数を使ってやってみたのですが、材料が文字列のせいかVALUEとエラーが出ていまいちわかりませんでした。 どなたか詳しい方よろしくお願いいたします。

  • エクセル 関数について

    入力データ A1~A10に数値10 B1~B20に数値20 C1~C10に数値30が入力されています 質問 A1~C10の範囲内から、E1に数値 0~10の個数、E2に数値11~20の個数、E3に数値21~30の個数、 E4に数値10~30以外の個数を関数を使って計算させるには、どのようにしたらよいのでしょうか? 現在 COUNT、COUNTIF、FREQUENCYを使ってみたのですが、、、うまくいきませんでした。 何か良い アドバイスを下さい 宜しくお願い致します

  • IF関数 エクセル

         A    B    C    D    E    F    G    H 1        会議室      部署名   会議      打合せ      2   9:00                  開始  終了   開始  終了 3   10:00  C部署      C部署 10:00  11:00  13:00  14:00 4   11:00  B部署      B部署 11:00  13:00       5   12:00  B部署      D部署             14:00  15:00 6   13:00  C部署        ・ 7   14:00  D部署        ・ 8   15:00        D3~Hを手入力すると、B2のスケジュール表に部署名が自動反映される式を教えてください。

  • 複数条件での値参照をする関数

    Excel2007を使っています。 以下のような表があります。 店番  月度  個数 111     4    1 111     5    0 113     4    0 112     4    1 113     5    2 別のシートに以下の表があります。 店番  4月個数  5月個数 111 112 113 この4月個数の列と、5月個数の列に関数で値を参照させたいと思います。 店番をA1セルとすると、B2セルには店番が111の4月の個数を表示させたいです。 B2に =IF(ISERROR(VLOOKUP(A2,元!A:B,2,0)),"",IF(VLOOKUP(A2,元!A:C,2,0)<>4,"",VLOOKUP(A2,元!A:C,3,0))) C2に =IF(ISERROR(VLOOKUP(A1,元!A:B,2,0)),"",IF(VLOOKUP(A1,元!A:C,2,0)<>5,"",VLOOKUP(A1,元!A:C,3,0))) このような式を入れると、4月か5月どちらか上に書いた方しかデータが表示されませんでした。 更新ボタンやトリガーを使わずにできるといいので、ピボットやVBAではなく関数でやりたいと思っているのですが、どのようにすれば良いか分かりません。 使える関数があれば、ぜひ教えて下さい。

  • Excelでの複数結果抽出がわかりません

    商品の日毎受注個数の一覧表をExcelで作成しています。 A列には日付 B列にはその日の受注個数 が並んでいます。 そしてB列中の最大値、最小値をE1、E2に関数で表示させています。 B列からE1、E2セル参照で最小値を検索し、隣A列の日付をE1の右隣セルから右方向に並べて複数抽出したいのですが、(該当する日付をすべて表示)どのような関数、マクロを書けば良いでしょうか?

  • エクセルの関数について教えて下さい

    現在ある表を元に、見積書を作っています。 すごい効率が悪く、困っています。 A1~G3に表があります。(実際にはもっと多いです) 1行目に商品名 2行目に金額 3行目に個数 G3 に合計 1・2行目は、元々商品名・金額が入っており 3行目に個数を入れていきます。 G3に合計が入るようにしています。 B2、350円  C2、320円  D2、400円  E2、500円  F2、550円  G2 B3、 1    C3、      D3、 1    E3、       F3、      G3、750円  (現在のG3に入っている数式) =F3*F2+E3*E2+D3*D2+C3*C2+B3*B2 項目が多い為、数式がすごい事になっています。 もっといい方法はないでしょうか? わかる方おられましたら、教えて頂けませんか? よろしくお願いします。

  • 複数条件が一致で別シートに転記【エクセルVBA】

    エクセルでセルの条件が複数一致したら別シートに転記される方法をお教えください。 シートを2枚用意して、配達日ごとに一覧化したいのです。 事前に用意したシート(配達表)の“配達”と“配達時間”が一致したら その方の名前と注文個数を右側に反映したいのですが・・・ 注文データが多すぎて困っています。 宜しくお願いします。 ■シート名:注文データ    A    B    C    D    E ------------------------------------------------ 1 しめい  対応   配達日   時間   個数 ------------------------------------------------ 2 たけだ  配達  6/20(月) 13:00  2個 3 みうら  配達  6/18(土) 14:00  4個 4 らもす  郵送  6/20(月)  ―   5個 5 いはら  配達  6/20(月) 14:30  8個 6 かつや  配達  6/20(月) 15:00  6個 7 みうら  郵送  6/20(月)  ―   4個 ■シート名:配達表     A     B    C ------------------------------------ 1  配達   6/20(月) ------------------------------------ 2  12:00 3  12:30 4  13:00 5  13:30 6  14:30 7  15:00 8  15:30 9  16:00 マクロを実行すると・・・ ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ■シート名:配達表     A     B    C ------------------------------------ 1  配達   6/20(月) ------------------------------------ 2  12:00  3  12:30 4  13:00    たけだ   2個 5  13:30 6  14:00    みうら   4個 6  14:30   いはら   8個 7  15:00   かつや   6個 8  15:30 9  16:00

  • 複数の条件で関数(エクセル)

    A列が「あ」の条件でB列-E列が10を超えている個数を数えたいのですが 適切な関数を教えてください。 A列が「い」の場合はVALUEになってかまいません。 ご指導よろしくお願いします。 A列 B列 C列 D列 E列 あ  11 10  5  10  い  10 23  1   1 あ  10  1  2   1  

専門家に質問してみよう