• 締切済み

エクセル、複数条件での最多値を調べるには?

すみませんが、どなたか教えてください! エクセルのSUMIF関数みたいな感じで、 (検索範囲,検索条件,集計範囲)= 集計範囲でもっとも多い入力値(文字) となるような関数や式・・・ないでしょうか? 具体的には   A    B      C   D 1 月日  現場名  名前 作業量 2 1/10  ○○店  山田  2 3 1/10  ●●店  笹木  2 4 1/11  ●●店  山田  3 5 1/12  ◎◎店  山田  2 6 1/12  ○○店  笹木  1 7 1/12  ○○店  川原  3 8 1/13  ●●店  山田  1 9 1/13  ◎◎店  川原  2 という表があって、指定した氏名からその人がもっとも多く入った現場名が返ってくる、というものです。 『山田』なら『●●店』と。 =SUMIF(C2:C9,"山田",D2:D9) とすれば『山田』で検索した『作業量』の【合計値】が返ってくるように、 『山田』で検索した『現場名』の【最多値】を返したいのです・・。 ・・無理でしょうか? ご存知の方、いらっしゃいましたら是非教えてください! よろしくお願いいたします!!

みんなの回答

  • rukuku
  • ベストアンサー率42% (401/933)
回答No.5

はじめまして 別解です。 1.------------------------- G1に検索したい人の名前(例:山田)を入力します。 H1に =IF(C2=$G$1,D2,"") 以下、H9までオートフィル G3に =MAX(H2:H9) とします。 これで、「MAXIF」関数が実現できます。 2.------------------------- 現場名を検索するためには、 I1に =B2 以下、I9までオートフィル G2に =VLOOKUP(G3,H2:I9,2,FALSE) と入力します。 検索した人の作業業のMAXが重複した場合には、その人のMAXの中で一番上のデータが採用されます。 検索した人がいない場合には、「#N/A」のエラーになります。

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

たまたま、以下の様に最多値が重複した場合です。   A    B      C   D   E   F 1 月日  現場名  名前 作業量 山田 2 1/10  ○○店  山田  2 3 1/10  ●●店  笹木  2 4 1/11  ●●店  山田  3 5 1/12  ◎◎店  山田  3 6 1/12  ○○店  笹木  1 7 1/12  ○○店  川原  3 8 1/13  ●●店  山田  1 9 1/13  ◎◎店  川原  2 E1セルに検索値として 山田 といれる F1セルに 山田さんの最多値を表示するために =MAX(IF(C2:C9=E1,D2:D9,0)) といれてCtrl+Shift+Enter(配列関数) E2セルに =IF(AND(C2=E$1,D2=F$1),ROW(),"") 下へコピィ F2セルに =IF(ISERROR(SMALL(E:E,ROW(A1))),"",INDEX(C:C,SMALL(E:E,ROW(A1)))) 下へコピィすれば 重複しても大丈夫です。

noname#204879
noname#204879
回答No.3

  A   B   C   D 1 月日 現場名 名前 作業量 2 1/10 ○○店 山田    2 3 1/10 ●●店 笹木    2 4 1/11 ●●店 山田    3 5 1/12 ◎◎店 山田    2 6 1/12 ○○店 笹木    1 7 1/12 ○○店 川原    3 8 1/13 ●●店 山田    1 9 1/13 ◎◎店 川原    2   F   G    H    I    J 1 名前 ○○店 ●●店 ◎◎店 最多現場 2 川原    3    0    2 ○○店 3 笹木    1    2    0 ●●店 4 山田    2    4    2 ●●店 G2: =SUMPRODUCT(($C$2:$C$9=$F2)*($B$2:$B$9=G$1),$D$2:$D$9) J2: =INDEX(G$1:I$1,,MATCH(MAX(G2:I2),G2:I2,0))

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

NO1です。 回答した数式では、同一の名前・作業量が重複しているとうまく抽出できませんので、読み飛ばして下さい。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

次の方法は如何でしょうか。 配列数式の為、入力完了時にshift+ctrl+enterキーを同時押下して下さい。 =INDEX(B:B,SUMPRODUCT((C2:C9="山田")*(D2:D9=MAX(IF(C2:C9="山田",D2:D9)))*ROW(A2:A9)))

gomupantu
質問者

お礼

早速のご回答ありがとうございます!! 確かに●●店が返ってきました! 今の私ではもうしばらく数式を見つめないと理解できそうもありませんが・・。 それと配列数式についても勉強させていただきます・・。 ありがとうございました。 また、質問させていただくかもしれませんが、その際にはよろしくお願いいたします。

関連するQ&A

専門家に質問してみよう