[[20110407135238]] 『VLOOKUPで検索値を複数のセルで指定したい』(MMM) ページの最後に飛ぶ

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

 

『VLOOKUPで検索値を複数のセルで指定したい』(MMM)

   A  B  C  D  E  F 
 1 要1
 2    要2
 3                      要3
 4         要5
 …
 x  要1 1000
 y  要2 1300
 z 要3 1500
 …

 のように、表を作っています。
 1行につきA〜Eのどこかに必ず1箇所だけ要1〜要5までの記入があり、
 この記入は同シート内のx…行からリストで指定しています。
 このときF列に、A1〜E1までを検索し、x…部分のリストから
 A列に対応するB列の数値を表示するようにしたいのです。
 例えばF1には1000、F3には1500といったような。

 VLOOKUPやISERRORで試してみましたがうまくいきません…。
 もっと簡単に出来るのであればVLOOKUP等にこだわりませんので、
 どうかご教授をお願いします。


 F1セルへ
 =VLOOKUP(INDEX(A1:E1,,MAX(INDEX(NOT(ISBLANK(A1:E1))*COLUMN(A:E),))),[xyzの範囲],2,0)
 として下にコピーしたらいかがでしょう。[]で括った部分は実際の範囲に合わせて下さい。

 (Jera)

   A  B  C  D  E  F 
 1 要1
 2    要2
 3                      要3
 4          
 5 要1 1000
 6  要2 1300
 7  要3 1500

 F1セルに
 =VLOOKUP(INDEX(A1:E1,MATCH("ー",A1:E1)),A$5:B$7,2,FALSE)
 下にフィルコピー

 でどうでしょうか?

 (se_9)

 se_9さん 横から申し訳ありません

 =VLOOKUP(INDEX(A1:E1,MATCH("ー",A1:E1)),A10:B14,2,FALSE)
                             ↑
   これは文字列ですよね?どうして表示できちゃうのでしょうか?

 お時間がある時で結構ですので、宜しければご教授下さい_(._.)_

 (アキラ)


 Jeraさま

 xyz部分を変更してコピペしてみましたが、エラーが表示されます。
 初見の関数が多いので、どこをいじっていいのかわからずお手上げです;

 se_9さま

 無事出来ました!ありがとうございます!!
 MATCH関数についてはおいおい個人的に勉強しますが、
 アキラさま同様、ちょっと不思議です;

 とりあえず、se_9さまの方法を取らせていただきます。
 ありがとうございましたー。

 (MMM)


 MMMさん

 =VLOOKUP(INDEX(A1:E1,,MAX(INDEX(NOT(ISBLANK(A1:E1))*COLUMN(A:E),))),○○:○○,2,0)
                                                                     ~~~~~~~~~
 Jeraさんの数式は○○の箇所を範囲に変えてあげるとOKですよ!!

 "ー"が未だに気になります(アキラ)

 以前"ー"を指定すると、選択範囲内の列で右端(?)に入力されている
 文字列を取得できるというのを見たことがあったので使ってみました。
 じゃあなんで"ー"なの?と言われると・・・いろいろ調べてはみたものの
 分からずじまい(T_T)
 お役に立てずすいません。ちなみに数値ではだめなようです。

 (se_9)

 se_9さん

 わざわざありがとうございました_(._.)_
 益々気になる一方ですね!!文字列のみ有効なのですね。
 エクセルは深いですね。マクロを勉強し始めましたが、まだまだ
 関数の勉強が必要のようです(/_;)(アキラ)

 あ、いや、右端っていうのは結果そうなっているわけで。
MATCHの照合の型を1にすると(式では省略されていますが、省略すると1とみなされます)
「検査値以下の最大の値が検索されます。このとき検査範囲のデータは、昇順に並べ替えておく必要があります。」(ヘルプより)
となるわけです。
で、なんで"ー"というと、「あ」とか「漢字」とか「1」とか「Z」とか適当な文字をセルに入力して、
「ー」と未入力の空白セルもどこかに入れて昇順で並べ替えてみてください。
空白セルが最後になり、「ー」が最後から2番目になると思います。
つまり、いろんな文字や数値よりも"ー"が「大きい」ことになります。
 
それを利用して、いろんな数値や文字が入っていても、「検査値以下の最大の値」=「"ー"以下の最大の値」
=「空白セル以外の入力された値」になるわけです。
 
で、MATCH関数の照合の型1は昇順に並んでいる前提ですので、左より右に大きな値があるはずです。
なので右側から一致する値を探しに行きます。
結果、一番右側に入っている値をピックアップする、ということになります。
 
こんなかんじでお分かりになります?(^^;;
(すずめ)

 すずめさん

 なるほど・・・。よく分かりました。詳しい説明ありがとうございました。

 (se_9)

 すずめさん 分かりやすいご説明ありがとうございました_(._.)_

 色んな応用知ってたつもりですが、まだまだまだでした(汗)

 勉強します!!ありがとうございました_(._.)_(アキラ)


 >=「空白セル以外の入力された値」になるわけです。
 >右側から一致する値を探しに行きます。

 本当ですか?
  (1) se_9 さんが「ちなみに数値ではだめなようです。」と云っていませんでしたか?

  (2) 2行目の例で「要2」より小さい位置にあるハズの値(ー)がヒットしましたが?
      行  _A_  _B_  _C_  _D_  _E_  _F_
       1       ー             要1  要1   F1セル =INDEX(A1:E1,MATCH("ー",A1:E1))
       2                 ー   要2  ー    F2セル =INDEX(A2:E2,MATCH("ー",A2:E2))

 (半平太) 2011/04/08 10:56

コメント返信:

[ 一覧(最新更新順) ]


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