• ベストアンサー

エクセル関数 MINIFS

MINIFS関数で得た最小値のある行のID番号を指定のセルに返す方法を教えてください(最小値を求める関数はMINIFS以外でも構いません)。エクセルは2010を使用しています。 よろしくお願いいたします。

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

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

提示された模擬データと条件を基にExcel 2010で目的のIDを抽出する数式は次のようになります。 =INDEX(A2:A6,MATCH(MIN(INDEX((B2:B6="A")*C2:C6+(B2:B6<>"A")*MAX(C2:C6),0)),C2:C6,0)) 実際のデータへ応用するときはセル範囲を修正するようにしてください。 尚、セル参照は相対番地なので他のセルへコピーするときは絶対番地の$記号を適宜付加してください。 条件に一致する対象が無いときのエラー処理は含まれていませんので必要のときは付加してください。

pillow71
質問者

お礼

動作確認できました。丁寧で簡潔にご回答いただきありがとうございました。大変助かりました!また、宜しくお願い致します。

その他の回答 (7)

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.8

本当に、度々 済みません また、間違えてますね 訂正 させて、ください 何処かの、セルに 入力し 下に、フィルして ください =IFERROR(  OFFSET($A$2,   SMALL(    INDEX(     (($C$3:$C$7=$F$4)*ROW($A$1:$A$5))     +(      ($C$3:$C$7<>$F$4)      +(       MIN(        INDEX(         ($C$3:$C$7<>$F$4)         *10^30         +$D$3:$D$7        ,,)       )       <>$D$3:$D$7      )     )     *10^30    ,,)   ,ROW(A1))  ,1,1,1) ,"-") 他にも 実験的、アプローチ と、して =IFERROR(OFFSET($A$2,SMALL( INDEX( (($C$3:$C$7<>$F$4)*10^30 +$D$3:$D$7)*10^8 +ROW(INDIRECT("A1:A"&COUNTA($C$3:$C$7))),,),ROW(A1)) -SMALL( INDEX( ((($C$3:$C$7<>$F$4)+(MIN(INDEX(($C$3:$C$7<>$F$4)*10^30+$D$3:$D$7,,))<>$D$3:$D$7))*10^20 +$D$3:$D$7)*10^8,,),ROW(A1)),1,1,1),"-") とか =IF( SUMPRODUCT((MIN(INDEX(($C$3:$C$7<>$F$4)*10^15+$D$3:$D$7,,))=$D$3:$D$7) *($C$3:$C$7=$F$4))<ROW(A1),"-", OFFSET($A$2, MOD(SMALL(INDEX(($C$3:$C$7<>$F$4)*10^30+$D$3:$D$7*10^8+ROW($A$1:$A$5),,),ROW(A1)),10^8),1,1,1)) とか また、 私の、主義 には、反する の、ですが コントロールキーと、シフトキーを、 押しつつ、エンターして、 入力する、もの と、して {=IF( SUMPRODUCT((MIN(INDEX(($C$3:$C$7<>$F$4)*10^15+$D$3:$D$7,,))=$D$3:$D$7) *($C$3:$C$7=$F$4))<ROW(A1),"-", OFFSET($A$2, MOD(SMALL(IFERROR(($D$3:$D$7*10^8+ROW($A$1:$A$5))/($C$3:$C$7=$F$4),""),ROW(A1)),10^8),1,1,1))} 単に 1件だけ、出す なら {=OFFSET(A2,MOD(MIN(CHOOSE((C3:C7=F4)+1,C3:C7,D3:D7*100+ROW(A1:A5))),100),1,1,1)} {=OFFSET(A2,MOD(MIN(IFERROR((D3:D7*10^8+ROW(A1:A5))/(C3:C7=F4),"")),10^8),1,1,1)} 此方も コントロールキーと、シフトキーを、 押しつつ、エンターして、 入力してください 筆末に 今回は、本当に 何度も、間違えて 済みません、でした。 謝罪します。

pillow71
質問者

お礼

大変貴重なアドバイスを沢山いただき本当にありがとうございました! また、宜しくお願い致します。

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.7

サンプルが、出ていた とは、気付かず 失礼、致しました 恐らく、此が 一番、シンプル で、しょう =DMIN(C2:D7,G3,F3:F4) (参考文献     : http://excel.onushi.com/function/dmin.htm ) 先ず、注釈 と、して 此の、関数は 「見出し」 ありきで、動作します 第一項:データベース範囲 此の、項には 見出し付きで 抽出条件に 用いる、値と、 最小値の、比較に 用いる、値、 の、範囲を 指定します 第二項:最小値比較項の指定 此の、項では 第一項の、範囲の 内で どの、見出しを 持つ、項で 最小値を、比較するか を、指定します 第3項:抽出条件 此の、項では 第一項の、範囲の 内で どの見出しで、抽出するか どういった、条件で 選別するか 指定します 例えば、今回は F3で、 見出しを、商品名 F4で 値を、A と、 指定、しています 此は 「見出しが 商品名の、欄から Aを、選べ」 との、指示に なります 条件は、1つ とは 限る、必要が 無くて 割と、多くの 条件が 指定、可能 です また、 =MIN(INDEX(((C3:C7=F4)*D3:D7)+((C3:C7<>F4)*MAX(D3:D7)*10),,)) と、しても 求まります。

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.6

行ナンバーですか? 奥ゆかしいですね =IFERROR(SMALL(INDEX(-SMALL(INDEX(-((MIN($A$1:$Z$10)=$A$1:$Z$10)*ROW($A$1:$A$10)),,),ROW(INDIRECT("A1:A"&SUMPRODUCT((MIN($A$1:$Z$10)=$A$1:$Z$10)+0)))),,),ROW(A1)),"") 因みに セルアドレスなら 此で =IFERROR( CHAR(  MOD(   SMALL(    INDEX(     -SMALL(      -INDEX(       (MIN($A$1:$Z$10)=$A$1:$Z$10)*(ROW($A$1:$Z$10)*100+COLUMN($A$1:$Z$10))      ,,)      ,ROW(       INDIRECT(        "A1:A"        &SUMPRODUCT(         (MIN($A$1:$Z$10)=$A$1:$Z$10)+0)        )       )      )     ,,)    ,ROW(A1))  ,100) +64) & INT(  SMALL(   INDEX(    -SMALL(     -INDEX(      (MIN($A$1:$Z$10)=$A$1:$Z$10)*(ROW($A$1:$Z$10)*100+COLUMN($A$1:$Z$10))     ,,)     ,ROW(      INDIRECT(       "A1:A"       &SUMPRODUCT(        (MIN($A$1:$Z$10)=$A$1:$Z$10)+0)       )      )     )    ,,)   ,ROW(A1)) /100) ,"")

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

>MINIFS関数で得た最小値のある行のID番号を指定のセルに返す方法を教えてください(最小値を求める関数はMINIFS以外でも構いません)。エクセルは2010を使用しています。 「行のID番号」とは「行番号」のことですよね?(A10セルの行番号は10) Excel 2010には標準の組み込み関数にMINIFSはありません。 Excel 2016に初めて追加されたようです。 私はExcel 2013です。MINIFS関数がありませんので検証できませんが論理的にはMATCH関数で求められます。 模擬データで良いのですが複数の条件と検索範囲の値を提示してください。 複数の条件でも特定列の最小値をMIN関数とINDEX関数の組み合わせで求められます。 具体的には模擬データの提示後とさせて頂きます。

pillow71
質問者

補足

ご回答ありがとうございます。 模擬データを作成しましたのでご確認ください。 ID 商品名 金額 1 A 1000 2 A 500 3 A 800 4 B 1000 5 B 200 商品名フィールドからAの値を抽出しつつ最安値を出し、同レコード上にあるIDフィールド(上図の場合2)を任意のセルに出力したいです。 この時、検索値の抽出方法に制限が入るデータベース関数の使用は避けたいと考えています。また、エクセル2010を使用しているため、MINIFS以外の関数で求められるなら大変助かります。 よろしくお願いいたします。

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.3

もとい 失礼しました 訂正 させて、ください 済みません。 後程、修正 致します

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.2

=IF(SUMPRODUCT ((MIN($A$1:$Z$100)=$A$1:$Z$100)+0)<ROW(A1),"". CODE(64-SMALL(- INDEX(MIN($A$1:$Z$100)=$A$1:$Z$100)*ROW($a$1:$a$100*COLUMN($a$1:$Z$1),,),ROW(a1)) & -SMALL(- INDEX(MIN($A$1:$Z$100)=$A$1:$Z$100)*ROW($a$1:$a$100,,),ROW(a1))) 範囲中 最小値を、示す セル、アドレスを 一覧で、示します (※注:未検証)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

定番だと =INDEX(ID番号の列範囲,MATCH(最小値の式,最小値のある列範囲,0))

pillow71
質問者

補足

ご回答いただきありがとうございます。 MATCH関数にMINIFS関数の値を渡せるという解釈でよろしいでしょうか? Yesの場合、MATCH関数の()内の記入例を教えていただけませんでしょうか? Noの場合、MATCH関数に複数の条件からなる最小値の値を渡せる方法がわかると助かります。 よろしくお願いいたします。

関連するQ&A