[[20101218091150]] 『エクセル2003を使っていますIFを使って...』(Momo) ページの最後に飛ぶ

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

 

『エクセル2003を使っていますIFを使って...』(Momo)

エクセル2003を使っています
IFを使って 以下のようなことをしたいのですが

   C   D    E     F     G    H    I     J     K     L

1   50  100   150   200   250   328   350   400   450   500

2   1    2     3     4     5     6     7     9    10     11

3

4    52    =IF(C4<=50,C2,IF(C4<=100,D2,IF(C4<=150,E2,IF(C4<=200,F2,IF
(C4<=250,G2,IF(C4<=300,H2,IF(C4<=328,I2,IF(C4<=350,J2,IF (C4<=400,J2,IF(C2<=450,K2,IF(C4<=500,L2)))))))))))

    C4 セルに任意の数字を入れたら 第2列の数値を選んで D4セルに表示する
  式を作りましたが エラーになります。 IF を使いすぎるとエラーになるようです
  何か良い方法はありませんでしょうか?


 こんな感じでしょうか? (Hatch)
=IF(C4<=C1,C2,
IF(ISNA(MATCH(C4,C1:L1,0)),
INDEX(C2:L2,,MATCH(C4,C1:L1)+1),
INDEX(C2:L2,,MATCH(C4,C1:L1,0))))

 こんなのでは?

 =IF(INDEX($C$1:$L$1,,MATCH(C4,$C$1:$L$1,1))=C4,INDEX($C$2:$L$2,,MATCH(C4,$C$1:$L$1,1)),INDEX($C$2:$L$2,,MATCH(C4,$C$1:$L$1,1)+1))

 (Bun)


 ゴメン、50未満の処理が抜けていました

 =IF(C4<C1,C2,  IF(INDEX($C$1:$L$1,,MATCH(C4,$C$1:$L$1,1))=C4,INDEX($C$2:$L$2,,MATCH(C4,$C$1:$L$1,1)),INDEX($C$2:$L$2,,MATCH(C4,$C$1:$L$1,1)+1)))

 (BuN)


 直接の回答ではありませんが、2003 での IF のネスト回数は7回までだったと
 思います。

 ご質問者は momo さんとは別の方ですよね。
 初心者さんほどではないですが、Momo に momo に momo さんがいらっ
 しゃるみたいですね。早口言葉みたいな・・・。

 全然関係ないですが、最近 弥太郎さんや HANA さんが見えなくなって寂しいですね。
 ここの雰囲気も随分変わってきました。
 駄レスですみません。
 (Mook)

 こういうのもどうでしょう?                            (PENSIONER)

 =IF(COUNT(C4),IF(C4<=500,SMALL(C2:L2,RANK(C4,(C4,C1:L1),1)),""),"")

 なるほど・・・こんな感じでもよさそうですね。エラー処理なしです。
 =INDEX(C2:L2,,COUNTIF(C1:L1,"<"&C4)+1)
 恥の上塗り・・・にならなければよいのですが ^^; (Hatch)

Momo

 皆様ありがとうございました。 皆様から教えて頂いた式の意味をずっと調べ
 実際に検証してました。
 おかげでINDEXという関数が少し見えてきました。
 
Mook様

 momoさんとは全然かんけいありませんよ(^^)


  質問文は正しいですか? 式も正しいですか?

 表と式が少しずれているようですね

 ・・・(C4<=300,H2,IF(C4<=328,I2,IF(C4<=350,J2,IF (C4<=400,J2・・・

 By

 1行目の値以下の条件で2行目の値を取り出したいというのが質問の意図ではないでしょうか?
 私はそのように読み取ったのですが・・・   (Hatch)

  少し長ったらしいですが。=12-(C4<=50)-(C4<=100)-(C4<=150)-(C4<=200)-(C4<=250)-(C4<=328)-(C4<=350)*2-(C4<=400)-(C4<=450)-(C4<=500)  (NB)

 Hatch様 その通りです。
 皆様のおかげで INDEX や MATCH 関数の使い方が見えてきました。
 ありがとうございました。
                  
                Momo 

               


 回答も出されて、解決していると思います。もう見ないと思いますが・・・

 質問内容が、実際の値を利用(一部に規則性がある)しているのか判りませんし
 実際に表を作成しているのでしょうか?

 降順に並べ替えて

    C   D   E    F   G   H   I   J    K   L      
 1  500   450    400    350   328   250   200   150   100   50  
 2    11    10      9     7     6     5     4     3     2     1
 3 
 4   52    

 =INDEX(C2:L2,MATCH(C4,C1:L1,-1))

 数値が整数の場合、値を変更して

    C   D    E    F    G    H    I     J    K      L      M
 1   0     51   101    151   201    251    329   351   401   451   501
 2   1    2    3     4     5    6     7     9    10     11 
 3 
 4   52 

 =HLOOKUP(C4,C1:M2,2)
 =INDEX(C2:L2,MATCH(C4,C1:L1,1))
    

 >IF を使いすぎるとエラーになるようです
 IFのネストを避ければいいので

 =IF(C4<=328,IF(C4<=50,C2,IF(C4<=100,D2,IF(C4<=150,E2,IF(C4<=200,F2,IF(C4<=250,G2,IF(C4<=300,H2,I2)))))),IF(C4<=350,J2,IF(C4<=400,J2,IF(C2<=450,K2,IF(C4<=500,L2)))))

 今回のように、途中まで規則性がある場合
 =IF(C4<=250,CEILING(C4,50)/50,IF(C4<=328,H2,IF(C4<=350,I2,IF(C4<=400,J2,IF(C2<=450,K2,IF(C4<=500,L2))))))

 実際の値、実際に作る表 などによりいろんな回答が出てくると思います

 参考までに・・・

 By

コメント返信:

[ 一覧(最新更新順) ]


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