- ベストアンサー
エクセルの数値選択で
A B C D --------------------------- 1 100 500 1000 5000 … 2 3 4 5 6 … 3 5 3 5 7 … 4 2 3 4 5 … 5 4 5 2 7 … の表があったとします。 X1のセルに数値を入力すると、その数値が100未満ならX2に3~X5に4を代入、100<=X1<500ならX2に4~X5に5を代入するなど、複数の列に対し1行目の数値を判定し2行目以下の数値を指定のセルに代入したいと思います。 4以上の複数列に対しては、どのような式を使えばいいのでしょうか。IF式を使ったのですがうまくいきません。 どなたかご教示ください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 >この数値を1として入力しても同じ結果でしたが、A1としなくてはならないのはなぜでしょう? X8=ROW(A1) として下方にコピーすると X9=ROW(A2) X10=ROW(A3) となりそのまま1,2,3に置き換わるからです。 数値をそのままの場合、行単位で書き換えが必要になります。 別セルにある連番(1,2,3...)を参照してもかまいませんが 一つの数式でできる方がいいでしょうから...
その他の回答 (3)
A B C D E … 1 0 100 500 1000 5000 … 2 3 4 5 6 … … 3 5 3 5 7 … … 4 2 3 4 5 … … 5 4 5 2 7 … … 》 その数値が100未満なら… 1行目のデータを右に1列分移動して、セル A1 に「その数値」の最小値を入力するのが簡単です。 上は最小値が 0 の場合なので適宜変更してください。 セル X2 に式 =HLOOKUP(X$1,A$1:W$5,ROW()) を入力して、此れを下方に複写すればよろしいかと。 この式は当該表の右端が列Wまで有効です。
お礼
実は当初私が質問したときの表では、100未満ではエラー(数値の表示なし)だったので、ご教示いただいたように変更していました。 ありがとうございます。
- mshr1962
- ベストアンサー率39% (7417/18945)
#1です。 >ROW()はどのように使うのでしょうか? たとえば =ROW(A8)と8が返ります。 つまり()内のセルの行位置を返す関数です。 ただし()内を省略した場合は、数式のある行位置を返します。 =INDEX($T$8:$Z$20,●,MATCH($C$11,$T$7:$Z$7,1)) でT8のデータがほしい場合、●には1が必要なので =INDEX($T$8:$Z$20,ROW(A1),MATCH($C$11,$T$7:$Z$7,1)) として下方にコピーすれば使えます。 ※ROW()関数は行ですが列位置(数値)がほしい場合はCOLUMN()が使えます。
お礼
たびたびのご教示ありがとうございます。 >=INDEX($T$8:$Z$20,●,MATCH($C$11,$T$7:$Z$7,1)) >でT8のデータがほしい場合、●には1が必要なので >=INDEX($T$8:$Z$20,ROW(A1),MATCH($C$11,$T$7:$Z$7,1)) >として下方にコピーすれば使えます。 ●にA1をいれてうまくいきました。 ありがとうございました。 この数値を1として入力しても同じ結果でしたが、A1としなくてはならないのはなぜでしょう?今後の参考としてお伺いできますでしょうか?
- mshr1962
- ベストアンサー率39% (7417/18945)
X2=LOOKUP($X$1,$A$1:$W$1,$A2:$W2) または X2=HLOOKUP($X$1,$A$1:$W$5,ROW(),TRUE) または X2=INDEX($A$2:$W$5,ROW(),MATCH($X$1,$A$1:$W$1,1)) でX5までコピー
お礼
=INDEX($T$8:$Z$20,●,MATCH($C$11,$T$7:$Z$7,1)) ●に行数を指定してやればうまくいきました。 ちなみにROW()を入れると違う数値を取ってしまったようです。ROW()はどのように使うのでしょうか?
お礼
大変参考になりましたありがとうございます。納得しました。 今後ともよろしくお願いします。