- ベストアンサー
別の表を参照して値を取得する
Aの列にランダムで順に増えていく数字が 10個、あります。 Bの列には10から1までの数字があります。 Dの列にある数字を入れて その隣のEの列に、Aの列のどこの範囲に あたるかを調べて、Bの列の数字を 表示させる方法をお願いします。 _A _B _D _E 03 10 28 01 05 09 27 01 08 08 26 01 09 07 25 01 11 06 24 02 14 05 23 02 17 04 10 06 20 03 03 10 24 02 11 06 28 01 12 05
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
No4ですF1が定義されていませんでした。 さらに長くなりますが次の式なら大丈夫だとおもいます。 =VLOOKUP(LARGE($A$1:$A$10,IF(D1=VLOOKUP(D1,$A$1:$A$10,1),RANK(VLOOKUP(D1,$A$1:$A$10,1),$A$1:$A$10),RANK(VLOOKUP(D1,$A$1:$A$10,1),$A$1:$A$10)-1)),$A$1:$B$10,2)
その他の回答 (4)
- jokyoju
- ベストアンサー率45% (10/22)
=VLOOKUP(LARGE($A$1:$A$10,IF(D1=F1,RANK(F1,$A$1:$A$10),RANK(F1,$A$1:$A$10)-1)),$A$1:$B$10,2) とE1のセルにいれ下方向のコピーしてください 式は複雑になっていますが作業用セルなしに計算できます。
補足
#N/A になってしまいます。
- pacific231
- ベストアンサー率44% (4/9)
横レスすみません。 vlookupの4番目の引数に"FALSE"もしくは"0"を追加してください。 その検索値に完全に合致する場合のみ値を返し、見つからない場合は#N/Aを返します。 4番目の引数を省略すると規定値の"TRUE"になり、検索値が見つからない場合、検索値未満の最も大きい値を返します。
A B C D 1 03 10 28 01 2 05 09 27 01 3 08 08 26 01 4 09 07 25 01 5 11 06 24 02 6 14 05 23 02 7 17 04 10 06 8 20 03 03 10 9 24 02 11 06 10 28 01 12 05 D1: =VLOOKUP(-C1,ref,2) ただし、事前に次の要領で「別の表」を作成しておく必要があります。 1.2列10行の任意の空き範囲の左上隅のセルに式 =-OFFSET($A$1,10-ROW(A1),0) を入力(→ -28 と表示) 2.その右隣のセルに式 =OFFSET($A$1,10-ROW(B1),1) を入力(→ 01 と表示) 3.上の2つのセルを下方にズズーッと9行分複写 すると、下の表が作成されます。当該表の範囲に ref という名前を付けます。 -28 01 -24 02 -20 03 -17 04 -14 05 -11 06 -09 07 -08 08 -05 09 -03 10
その例なら =VLOOKUP(C1,A1:B10,2) 但し、A列が昇順に並んでないとダメです。
補足
数字ピッタリの所は正確に出ますが、 数字ピッタリでない所は1ずれてしまいます。 お願い致します。
お礼
完璧です! ありがとうございました。