• ベストアンサー

エクセルの数値選択で

   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式を使ったのですがうまくいきません。 どなたかご教示ください。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.3

#1です。 >この数値を1として入力しても同じ結果でしたが、A1としなくてはならないのはなぜでしょう? X8=ROW(A1) として下方にコピーすると X9=ROW(A2) X10=ROW(A3) となりそのまま1,2,3に置き換わるからです。 数値をそのままの場合、行単位で書き換えが必要になります。 別セルにある連番(1,2,3...)を参照してもかまいませんが 一つの数式でできる方がいいでしょうから...

nkeis
質問者

お礼

大変参考になりましたありがとうございます。納得しました。 今後ともよろしくお願いします。

その他の回答 (3)

noname#204879
noname#204879
回答No.4

  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まで有効です。

nkeis
質問者

お礼

実は当初私が質問したときの表では、100未満ではエラー(数値の表示なし)だったので、ご教示いただいたように変更していました。 ありがとうございます。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

#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()が使えます。

nkeis
質問者

お礼

たびたびのご教示ありがとうございます。 >=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)
回答No.1

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までコピー

nkeis
質問者

お礼

=INDEX($T$8:$Z$20,●,MATCH($C$11,$T$7:$Z$7,1)) ●に行数を指定してやればうまくいきました。 ちなみにROW()を入れると違う数値を取ってしまったようです。ROW()はどのように使うのでしょうか?