プロが教える店舗&オフィスのセキュリティ対策術

以下のような表があるとします。

いちご 50
りんご 30
りんご 40
りんご 70
さとう 20
みかん 10
みかん 20

これで、例えばりんごの値をVLOOKUPで求めた場合
一番上である30が答えとして表示されます。
これを、一番下の70を出すには、どのようにしたら良いのですか?
 

A 回答 (5件)

#3の回答者です。



#1様の数式について、私は、#3で詳しくは書きませんでした。すみません。ご質問者さんがエラーが発生するとしたら、このような状況が考えられます。

Excel 2003以下の仕様にはこのような問題があります。

Excel の仕様および制限
計算の仕様 --ワークシートの配列
http://office.microsoft.com/ja-jp/excel/HP051992 …

#1の数式は、INDEXは、配列数式です。
「セルの範囲 = 値」というスタイルは、配列数式といいます。一般数式は「ひとつのセル = 値」です。
それは、一旦、キャッシュの中に、計算ステージができて、そこで計算されます。そこから値を取り出すには、INDEX関数やSUMPRODUCT関数を使ったり、配列の確定(F2を押して、『ShiftとCtrlを押しながらEnterキー』を押す)をしたりします。

ですから、INDEX 関数等を使わない場合は、配列の確定をしても同様になります。Office 2007 では、その仕様が変わり、列全体をして指定しても、配列の制限がありません。ただし、広範囲にすると計算が遅くなることがあります。下位バージョンでは、範囲を指定しないと配列は不可能なのです。

ご興味のある方は、以下をごらんください。

Excel で配列を使用する処理の制限について
http://support.microsoft.com/kb/166342/ja
    • good
    • 0

NO1です。


提案した関数は配列数式ではなく、ただの配列ですので配列数式の制約(入力完了時のshift+ctrl+enterキー同時押下、列指定はできない)はありません。
尚、当方エクセル2007でしか評価できていませんので一度お試しください。
    • good
    • 0

こんにちは。



配列は必要ありません。

C1 に、「りんご」と置きます。

=IF(COUNTIF($A$1:$A$20,$C$1)>0,INDEX($A$1:$B$20,MATCH($C$1,$A$1:$A$20,0)+COUNTIF($A$1:$A$20,$C$1)-1,2),"")

なお、配列数式では、列全体を参照することはできません。たとえば、配列で列全体 C:C や範囲 C1:C65536 を参照することはできません。範囲を限定しなけばなりません。

例:
=INDEX(B1:B20,MAX(INDEX((A1:A20=C1)*ROW(A1:A20),)))
    • good
    • 1

VLOOKUP関数は複数該当の何番目がを指定できない。


また検索表を逆に並べ替えてもダメ。
もしりんご行の中で現状の順序を逆転できれば、使えるかもしれないが並べなおしも、それも難しい。
ーー
配列数式で
例データ
りんご10


りんご30


りんご20
りんご25
他の品目は手抜きで、省略。
空きのセルに =INDEX(B1:B10,MAX(IF(A1:A10="りんご",ROW(A1:A10)))) と入れて、SHIFT、CTRL,ENTERキーを同時押し。
結果
25
    • good
    • 2

vlookup関数ではできません。


一例です。
仮にA列に品名、B列に値としています。
=INDEX(B:B,MAX(INDEX((A:A="りんご")*ROW(A:A),)))
    • good
    • 8

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!