• ベストアンサー

エクセル関数 MINIFS

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

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

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8248)
回答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/8248)
回答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% (7418/18948)
回答No.1

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

pillow71
質問者

補足

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

関連するQ&A

  • エクセルの関数

    エクセルの表で、通し番号を自動で入力したいと思います。 番号は、頭にアルファベットが入っています。A1110,A1111・・です。 この通し番号を関数を使って、最初の番号を入力したら、指定されたセルに自動で入力出来る様にしたいのですが、どんな方法があるか教えて下さい。

  • エクセルのcountif関数について

    エクセルで下記のような場合、どのような関数になるのでしょうか?? 番号2の行について (1)B列に1~999までの数字が入力されていて (2)かつJ列に「ごはん大」という文字が入力されている (3)ただし「ごはん大」と打ち込んであるせるは「ごはん大 おかず大盛り」など「ごはん大」以外の文字も同一セルに入力されている可能性がある。 このような場合、countif関数を使用するのではないか、ということまでは何となくわかったのですが、(1)、(3)についてよく分からずご質問させていただきました。 ちなみにエクセル2010を使用しています。 どなたかアドバイスよろしくお願いします。

  • エクセルのMin関数

    エクセルでデータ中の最小値を表示するとき、「ゼロ以外で最小」を一発で出す 方式はありますか?Min関数ではその手の指定ができないようなのですが...

  • エクセル関数のセル参照方法

    エクセル関数のセル参照で、あるセルに入力した数値を、参照するセルの行番号として使いたいのですがどうしたらよいのでしょうか? VBAではそのような方法があったと思うのですが、関数で処理する方法はあるのでしょうか? たとえば、 =SUM(C5:C*) のような関数で「*」を他のセルに入力して参照させることは可能でしょうか? よろしくお願いいたします。

  • officeのexcelにて最小値の計算

    officeのexcelにて最小値の計算 ある行についての最小値を出したいのですが、 その行には空白のセルがある場合があります。 この行でMIN関数を使用すると、空白のセルを"0"として計算してしまいます。 空白のセルを無視して、「数値が入力されているセルの内、最小値」を出したいのですが、 どうすればできるでしょうか。

  • Excelの関数

    Excelで、範囲指定した列に文字"○"があり、なおかつ文字"○"があった行の範囲指定した別の列に文字"△"があるセルの個数カウントをしたいのですが、その場合の関数がわかりません。 わかりづらい質問で申し訳ございませんが教えてください。 よろしくお願いいたします。

  • Excel検索等関数

    Excelのデータで同じ列の中に番号が重複している値を探し出しなおかつ任意の行数に出す関数はありますか? Sheet1   |Sheet2   A  B |   A  B        1 あ 10 | 1 あ  10 2 あ 11 | 2 あ  11 3 い 21 | 3 い  21 4 う 22 | 4      ←A4:b4は、「い」が2行ないので空白        | 5 う  22        | 6      ←A6:b6も、「う」2行ないので空白 このように、縦の重複したセルを検索して、指定行数内の場合は、空白となる関数式があればお教えください。

  • Ms-Excelの関数について

    Ms-Excelの関数について ---------------------- 90 6 6 10 0 3 80 1 2 99 2 9 ---------- =VLOOKUP(MIN(A1:A4),A1:C4,3,0)(←答えは3) ------------------------ このようになると思いますが、 最小ではなく、最小から2番目のもの(80の、行の答えである2)を選び出したいのですがどうすればいいでしょうか? よろしくお願いいたします。 また、もし、可能でしたら、同順位の場合(A:Aに、同じ数字が来た場合)、行番号の大きいデータの優先が出来ればなお助かります。 ご返答何卒、よろしくお願いいたします。

  • エクセルの関数について

    Windows Xp エクセル2003を使用しています。 業務で使用している集計表ファイルがあり、別ファイルにデータを反映させたいのです。 集計表のセルA1を検索値としセルB1とセルB2の値を返す関数はないでしょうか? 集計表のつくりは約1000行あり、セルA3を検索値としてセルB3の値を返す行もあります。 セルA5を検索値とし、B5、B6、B7、C5,C6の値を返す行など様々です。 こういったデータがランダムで表になっています。一つの検索値に対して、検索値の水平方向はvlookup関数で表示出来たのですが、 一つの検索値で2つの値を返す関数が分からず、困っています。 1行下や2行下を検索する関数も参考にしたのですが、集計表のつくりがランダムの為、検索してほしくないものまで表示されてしまうなど、ウマクできませんでした。 宜しくお願いします。

  • Excelの関数で・・・

     私は、エクセルの関数で次の形の式をよく使います。  セル番号A1に  IF(B1="","",・・・・・・・・・・)  みなさんご存知のとおり、『「セル番号B1」が空欄の場合は、「セル番号A1」に空欄を返しなさい。それ以外の場合は・・・・・・・・・・・。』  そこで質問です。  セル番号A1に、  『「セル番号B1」と「セル番号C1」と「セル番号D1」の3つ全部が空欄の場合は、セル番号A1に空欄を返しなさい。それ以外の場合・・・・・・・・・・・。』  とういう式をお教えください。解りにくい文章(説明文)ですがよろしくお願いいたします。

専門家に質問してみよう