• 締切済み

複数条件のMIN関数

いつもお世話になっております。 以前にも質問した内容なのですが、当てはまる回答が なかったため、再掲させていただきます。 A列 B列 1  06/06/06 3  06/08/01 2  06/06/15 3  06/07/25 1  06/07/20 1  06/06/06 ・   ・ ・   ・ のようなデータがあります。 そこで、C列に 1) A列が「1」且つ、B列が最小値のもの 2) A列が「2,3」且つ、B列が最小値のもの のデータを取得したいです。 ただ、A、B列ともに固定値ではないため、Null値が 発生します。 そこで、教えて頂いた数式が MIN(INDEX(SUBSTITUTE((($A$1:$A$10=1)*($B$1:$B$1>0))*1,0,10^7)+(B1:B10)-1,))) で、Min関数がNull値を感知することと、シリアル値が0の場合、最小値がうまく取れないと いう現象を考慮してしてあります。 そのため、Null値の場合の答えが「9999999」になりますが これを表示させたくないので「=IF(C1=9999999,\"\",」 としてますが、この数式を何行にも渡り書いている為 パフォーマンスがかなり悪いです。 なにかいい方法、もしくはいい数式はないですか??教えて下さい。

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

1) =MIN(IF((A1:A10=1)*(B1:B10>0),B1:B10,"9999/12/31")) 入力決定時にSHIFT+CTRL+ENTER

関連するQ&A

  • 複数条件のMIN関数

    いつもお世話になっております。 前回、誤って二重投稿してしまった為、サイト側で 削除されてしまったようなので、再投稿致します。 もう内容を見ていた方、何度もスミマセン。 A列 B列 1  06/08/01  3  06/07/20 1  06/07/25 2  06/07/28 2  06/07/20 ・  ・ ・  ・ こんな感じのデータがあります。 A列、B列ともに固定値ではないため、空の行が発生します。 そこで、A列が「1」だった場合のB列の最小値とか A列が「2もしくは3」だった場合のB列の最小値の日付データ をC列に求めたいと思ってます。 数式は、教えて頂いて =MIN(INDEX(SUBSTITUTE((($A$1:$A$10=1)*($B$1:$M$10>0))*1,0,10^7)+(B1:B10)-1,)) =MIN(INDEX(SUBSTITUTE((($A$1:$A$10>1)*($B$1:$M$10>0))*1,0,10^7)+(B1:B10)-1,)) で記述しているのですが、A列の値がない場合数式の答えに 「9999999」や「10000000」が入ってきます。 (O値が入ったときに置き換えをしている為) それを表示させないために、「=IF(C1=9999999,"",」を 数式の頭に入れているのですが、何行にも渡って上記の数式を 書いているため、再計算され続けてパフォーマンスがかなり悪いです。 もっと効率よく、計算できる方法があれば教えて下さい。 お願い致します。

  • 複数条件で最小値を求める

    Excel2007です。 複数の条件をつけて最小値を求めたいです。配列数式を使います。 A列に体重、B列に性別、C列に住所だとして 男で東京都と神奈川という条件の中から体重の最小値を求める時、 {=MIN(IF((B1:B100="男")*((C1:C100="東京")+(C1:C100="神奈川")),A1:A100)}でCtrl+Shift+Enterで確定しました。 実際のデー量はもっと多いです。 たぶんきちんと計算されているようなのですが、自信がありません。 正しい数式になっているでしょうか? マクロは使わない方法でお願いします。

  • MIN関数が入力されているセルの行数に基づいてMIN関数の範囲を変える方法

    A列のA1がタイトル行で、その下に数字でデータが入力されています。 このとき、例えばB3にはA2からA3までの最小値、B4にはA2からA4までの最小値、・・・、B100にはA2からA100までの最小値、というように入力したいのです。 MIN関数とROW関数を組み合わせればよいと思うのですが、うまくいきません。 B列にはどのような式を入力すればよいでしょうか。

  • 複数条件で最小値を求める

    Excel2007です。 複数の条件をつけて最小値を求めたいです。配列数式を使います。 A列に体重、B列に性別、C列に年齢だとして 男で20歳~25歳という条件の中から体重の最小値を求める時、 {=MIN(IF((B1:B100="男")*((C1:C100="20")+(C1:C100="21")+(C1:C100="22")+(C1:C100="23")+(C1:C100="24")+(C1:C100="25"))),A1:A100)} としてみたのですが、うまくいきません。 おそらく、((C1:C100="20")+(C1:C100="21")+(C1:C100="22")+(C1:C100="23")+(C1:C100="24")+(C1:C100="25"))が違うのだと想像はつくのですが、どうすればきちんとでるのかわかりません。 マクロは使わない方法でお願いします。

  • 《エクセル2000》配列数式とMIN関数を使い、最小値を出したいのですが

    いつもお世話になっております。 配列数式とMIN関数を使って最小値を出す作業をしていますが、最小値は0.3なのに0.0と返って来てしまいます。 条件は「A列が1で、B列が数字だったら」なのですが、B列には空白も入っています。 B列の空白のセルは、ISNUMBER関数でチェックするとFALSEが返ってくるのですが、もしや空白を0とみなしているのでしょうか。 COUNTIFのMIN版と言いますか、条件つきで最小値を出せる関数があればいいのですが…原因と対策をご存じの方、どうかご教示を。

  • IF関数の複数の条件について

    よろしくお願いいたします。    A   B   C 1  ○   ○    あ  2  ○   △    い  3  △   △    う 4  △   ○    え 5  □   △    お A列が○でかつB列が○のみ場合、E列は「あ」、 A列が○でB列が○以外の場合はC列は「い」、 A列が△でかつB列が△のみ場合、E列は「う」、 A列が△でB列が△以外の場合はC列は「え」、 A列が○、△以外の場合はC列は「お」。 というようなIFを使った数式はは可能でしょうか? 質問に矛盾がありましたら申し訳ありません。

  • VLOOKUP関数(複数条件)について

    いつもお世話になっております。 エクセル2007でのデータの抽出についてお尋ねすます。 Sheet1 A列に苗字 B列に名前  Sheet2 A列に苗字 B列に名前 C列に住所の一覧があります。 この場合Sheet1のC列に苗字、名前に対応する住所をSheet2から抽出する方法を教えてください。 Vookup関数、DGET関数・・・なんかを調べてみたのですがうまく行きません。 また最終的にはデータ数を増やして((Sheet3、Sheet4・・・)から苗字、名前に対応する項目を抽出)いく予定です。 配列数式で行けるのかな?とも考えていますが、重くなりそうなので・・・ どうぞよろしくお願いします。

  • 関数の質問

    よろしくお願いします。 エクセル2003を使用しています。 A ∥ B ∥ C 87 ∥ a ∥ 47 70 ∥ - ∥ 47 ∥ - ∥ 32 ∥ b ∥ 11 11 ∥ - ∥ 72 ∥ c ∥ 19 19 ∥ - ∥ 82 ∥ - ∥ 20 ∥ - ∥ 91 ∥ - ∥ 48 ∥ d ∥ 18 98 ∥ - ∥ 18 ∥ - ∥ 66 ∥ - ∥ 46 ∥ e ∥ 46 C列にA列の数字の最小値をB列のa~b、b~c、c~dという感じで求めたいのですが、 一括でできる関数を教えてください。 C列は以下のように求めてます。 C1=MIN(A1:A3) C4=MIN(A4:A5) C6=MIN(A6:A10) C11=MIN(A11:A14) C15=MIN(A15:A15)

  • 複合式でmin関数を求めるには

    こんにちは。 現在、以下のような問題で困っています。 誰かお分かりになる方がいらっしゃれば、お教え願えませんでしょうか? 現状 WindowsXP Microsoft Excel2000 A列 B列 C列 D列 1234 2467 12  7 2356 9864 2   34 2578 983  235 765 2789 876 23 12 というような数字が並んでいまして、私が求めたい数式は、 =(A+B)-(C か D)←CかDは、小さい方を求めたいのです。 この式をうまく作れずに困っています。 誰か、お分かりになる方がいらっしゃれば、教えてください。 お願いいたします。

  • EXCEL関数にて

    いつもお世話になっております。 Excelの関数にて質問なのですが、下記のようなデータが セルに入っているとします。 A列 B列    C列    D列  1  06/06/10 06/07/01 06/06/04 2  06/06/07 06/06/25 06/06/10 3  06/06/15 06/06/20 06/06/15 2  06/06/15 06/06/01 06/06/20 3  06/06/01 06/06/07 06/06/09 2  06/06/01 06/06/02 06/06/30 処理1.A列が1で、且つ日付が最大値(最小値)のもの 処理2.A列が2か3で、且つ日付が最大値(最小値)のもの AND関数とMIN関数とMAX関数を、使って色々ためしているのですが うまくいきません。 どういった書式で求められるのか、ご教授頂けませんか? それから単純にB列の最小値を得ようとしても、求められないのは 重複してたりするからですか?? 重ねて、教えていただけると助かります。