[[20070717002333]] 『複数の条件に合うデータの最小値』(mini) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『複数の条件に合うデータの最小値』(mini)

 A	  B	   C
 田中	男	2007/05/02
 鈴木	男	2007/02/25
 田中	男	2007/10/07
 田中	男	2007/09/15
 田中	女	2007/06/09

 A列が田中、B列が男である、C列の日付の最小値の求め方を教えてください。
 今まで下記のように最大値を求めていたのですが
 MINにした場合、最小値が「0」が返ってしまいます

 2007/10/07	 {=MAX((A1:A5="田中")*(B1:B5="男")*C1:C5)}
 1900/01/00	 {=MIN((A1:A5="田中")*(B1:B5="男")*C1:C5)}

どのようにすれば良いでしょうか。よろしくお願いします。


 >(A1:A5="田中")*(B1:B5="男")*C1:C5
 これで返される配列は
 {39204 ; 0 ; 39362 ; 39340 ; 0}
    5/2 ; 0 ;  10/7 ;  9/15 ; 0
 ですので、一番小さい値は「0」になります。

 MIN関数を使うなら
 0以下の値を「""(文字列=数値より大きい)」に変換して最小値を求める
=MIN(IF(((A1:A5="田中")*(B1:B5="男")*C1:C5)>0,(A1:A5="田中")*(B1:B5="男")*C1:C5,""))
 【Ctrl + Shift + Enter】で確定 cf MIN({39204 ; "" ; 39362 ; 39340 ; ""})

 MIN関数以外では
 事前に「0」になる数を求めて於いて「SUMPRODUCT((A1:A5<>"田中")+(B1:B5<>"男"))」
 小さい方から数えて、その一つ大きい位置にある数字を求める
=SMALL((A1:A5="田中")*(B1:B5="男")*C1:C5,SUMPRODUCT((A1:A5<>"田中")+(B1:B5<>"男"))+1)
 【Ctrl + Shift + Enter】で確定 cf SMALL({39204 ; 0 ; 39362 ; 39340 ; 0}, 2 + 1)
 なんてのはどうでしょう。

 (HANA)

 衝突〜☆
 でも、そのままUPw
 
 そうですね。
 MIN関数は最小値を出しますよね?
 上記計算式で「TRUE」と「FALSE」を出すと、両方「FALSE」のものは「0」が返ります。
 よって、最小の「0」の答えの「1900/01/00」が返ってしまいますね〜
 
 配列数式ですので、こんなのは如何でしょう?
 
 =MIN(IF((A1:A5="田中")*(B1:B5="男"),C1:C5,""))
 
 (キリキ)(〃⌒o⌒)b

 キリキさん、こんばんは〜♪
 久しぶりの衝突☆ でしたか。
 >=MIN(IF((A1:A5="田中")*(B1:B5="男"),C1:C5,""))
 そう言われてみるとそうですよねぇ・・・。(笑)
 どもです。

 (HANA)

 HANAさん、キリキさんありがとうございます。

 なるほど…条件に当てはまらないと*0になってしまうんですね。
 初歩的なことでお恥ずかしいです。

 文字列は数値より大きいと判断されるとは知りませんでした。
 文字列を使うよりはSMALLの方が良いかと思ったのですが
 これだと”鈴木””女”のように重なると順位の数が増えてしまいますよね?

 文字列の方法を使わせていただきます。助かりました。
 ありがとうございました!
(mini)

 HANAさんども^^
 難しく考えすぎましたね〜♪
 今日のマクロのせいかなwww
 
 >文字列は数値より大きいと判断されるとは知りませんでした。
 ん?
 これは、σ(^o^;)の提示した数式のことかしら?
 チョット違うと思いますよb
 
 MAX関数も同じ事が出来ます。
 =MAX(IF((A1:A5="田中")*(B1:B5="男"),C1:C5,""))
 大きい・小さいではなく、数値以外は除外(無視)が正しいのかな?
 
 (キリキ)(〃⌒o⌒)b


 ありゃりゃ、またやらかしてますね。
 私が書いた
 >0以下の値を「""(文字列=数値より大きい)」に変換して
 の部分ですね。
 このたびのはMIN関数に入っているのでキリキさんの仰っている
 >大きい・小さいではなく、数値以外は除外(無視)が正しいのかな?
 が正しいですね。

 本当に、SMALL関数の方もですねぇ・・・。(全くなにやってんだか。)
 はやく寝ることにします。(笑)
 キリキさん、またまたお世話になりました。
 miniさん、ごめんなさいね。

 (HANA)

 >「""(文字列=数値より大きい)」
 を見てそう思ったのですが、ごめんなさい。よくわかってなくて…。

 >=MAX(IF((A1:A5="田中")*(B1:B5="男"),C1:C5,""))
 これすごくいいですね。
 実はC列に文字列が紛れ込んでるような表ではエラーがでて困ってたのですが
 これで解決することができました。

 夜遅くありがとうございました。
(mini)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.