• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL、ある範囲の中で条件を満たす値2)

EXCELで条件を満たす値を取得する方法

このQ&Aのポイント
  • EXCEL2010で、ある範囲の中で条件の一番下の値を取得する方法についてご質問です。
  • 具体的には、シート名「データ」の範囲内で、Nが「2001」かつOが「1」である行のU列の値「-2144」を取得したいと考えています。
  • この場合、シート名「結果」のL列に式を入力して、条件に一致する最後の値を取得することができます。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

たとえば =INDEX(データ!U:U,MAX(IF((データ!N3:N20=2002)*(データ!O3:O20=1),ROW(データ!U3:U20),-1))) をコントロールキーとシフトキーを押しながらEnterで入力します。 #まるで回答が悪かったみたいに言われるのは大変心外ですね。ご自分の実際のエクセルに合わせようとして失敗したときは、あなたが自分で作成して実際にエクセルに入れて失敗した「その数式」をご相談で掲示するようにしてみて下さい。 そうすれば、ここを間違っていますとかそれならこうしましょうといった、もっと建設的なアドバイスも皆さんから広く寄せられると思います。 また、2002やら1やらを「どういう具合に」エクセルに入れて計算しようとしているのかといった、説明が足りてない部分もそこから読み取ることもできます。 更に言えば、併せて「あなたの式」で「(-2144が欲しかったのに)この式ではこうなってしまった」のような、具体的にどんな結果になって失敗したのかも情報提供してみて下さい。状況によっては「数式は正しかったけどデータが実は掲示されたようではなかった」ので上手くいかない場合もあって、そういうのも読み取れる可能性があります。

miya_HN
質問者

お礼

回答ありがとうございます。 誤解するような書き方であったら大変申し訳ありません。 これは回答が悪かったということではなく、回答者様の回答を元に作ってみたのですが、「#VALUE!」が出てしまいました。 実際に作っているものを記載した方が分かりやすいと思い、改めて質問させていただきました。 以下のように入力しましたが「#VALUE!」が出てしまいました。 どこが間違っているのでしょうか? =INDEX(データ!U:U,MAX(IF((データ!N$3:N$1048576=A3)*(データ!O$3:O$1048576=B3),ROW(データ!U$3:U$1048576),-1))) 「A3」は、シート名「結果」に入力されている「2001」の部分です。 「B3」は、シート名「結果」に入力されている「1」の部分です。 大変申し訳ありませんがもう一度回答よろしくお願いします。

miya_HN
質問者

補足

申し訳ありません、勘違いでした。 「-2144」を出力することができました。 ありがとうございました。

その他の回答 (4)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.5

回答No3です。次の式がベターでしょう。 =INDEX(U3:U100,MIN(COUNTIF(O3:O100,"<=1"),COUNTIF(N3:N100,"<=2002")))

miya_HN
質問者

お礼

回答ありがとうございます。 いろいろ計算式があるんですね。 ありがとうございました。

回答No.4

各式の使用条件について、補足します。 No.1さんの式では、入力時に Ctrl+Shift+Enter の操作が必要です。No.2の式では、特に条件はありません。No.3さんの式では、N列・O列の値が昇順で並んでいることがまず必要そうですが、式中の値を他の値に書き換えると、正しく計算しないケースがありそうな…?例えば「(O3:O100,1)」→「(O3:O100,2)」と書き換えた場合です。

miya_HN
質問者

お礼

回答ありがとうございます。 「-2144」を表示できました。 ありがとうございました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

N列が2002で、O列が1の条件の時で最下行のー2144を表示させるのでしたら次の式で良いでしょう。 =INDEX(U3:U100,MIN(COUNTIF(O3:O100,1),COUNTIF(N3:N100,2002)))

miya_HN
質問者

お礼

回答ありがとうございます。 「-2144」を表示できました。 ありがとうございました。

回答No.2

同じ条件のものが複数あって、「条件を満たすレコードで行番号が最大のもの」を一つだけ取り出すという意味ですか?でも「結果シートに「3行目から」入力」ともおっしゃっていますね…? 一つだけなら、こんな感じ。 =indirect("データ!u"&max(index(row(データ!n:n)*(データ!n:n=2001)*(データ!o:o=1),)))

miya_HN
質問者

お礼

回答ありがとうございます。 同じ条件のものが複数あり(N列「2001」かつ、O列「1」)、その範囲の中で、O列の「1」の中でも一番下の「-2144」という値を取り出したいという意味です。 はい、一つだけ取り出すという意味です。

関連するQ&A