• ベストアンサー

Excel検索関数で

説明下手なのでわかりにくいかもしれませんがお願いします。 VBAを使わず、エクセルの関数のみを使って表のデータを抜き出し並びかえる作業をしてます。 表は複数あり、あらかじめ決められた順番に列を抜き出し、新たなシートに表を作ってます。 抜き出す時にVLOOKUPを使用しています。 抜き出す先の表にも検索値の列が存在してます。 一番最初にB列に基準となる列を抜き出し、B1を検索値、 抜き出したい列のある表を検索範囲(仮に○○!A1:C5とします) 抜き出す列は1列目(A列)なので1、 検索の型はFalseにします。 以上を式にすると、 =VLOOKUP($A1,○○!$A$1:$C$5,1,0)となってるのですが、 目的のA列が抜き出せません。 ちなみに、同じ式をオートフィルで引っ張るので絶対参照させてます。 また、抜き出す列より後の列が抜き出せないような状態です。 これでわかりますでしょうか? VLOOKUPじゃなくてもいいので何か方法はありませんでしょうか? 説明わかりにくくてすみません・・・

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

  • ベストアンサー
  • vista2446
  • ベストアンサー率46% (131/279)
回答No.4

おはようございます。#3です。 B列の値からA列、C列の値を引き出してくるんですね。 A列はLOOKUP関数で・・・=LOOKUP($B1,○○!$B$1:$B$5,○○!$A$1:$A$5) C列はVLOOKUP関数で・・=VLOOKUP($B1,○○!$B$1:$C$5,2,0) これでいかがでしょうか?

ktakusya
質問者

補足

おはようございます。 LOOKUP関数で同じやり方を試していましたが、 うまくいきません・・・ 実際には700行くらいのシートなんですが、 上記のやり方でやると、本来データが入ってるはずの所々が#N/Aになり、 後の所は全部同じ結果になってしまいます。 実際には法人と個人という項目でどちらかが入っているのですが、 数式を入れた結果、個人の所も法人で出てしまったりとおかしな状態です。

その他の回答 (5)

回答No.6

A1です。 B列の値からA列、C列の値を引き出してくるんですね。 Vlookup検索対象の列は必ず表の左端にないといけません。 真ん中の列を検索してそれより左側を抽出することは出来ません。 なのでA列とB列を入れ替えてA列を検索するようにしたら いいでしょう。

  • vista2446
  • ベストアンサー率46% (131/279)
回答No.5

#3です。連続投稿で恐縮ですが。。。 補足を拝見して「おや?」と思ってしまったものですから。。。 もしかして、検索値が並ぶB列には同じ値が入力されていませんか?もし、そうならフィルタオプションや並び替えが使えるんじゃないでしょうか? LOOKUPやVLOOKUPはB列に重複データがあると、#N/Aや意図しない行の値を返してきますから。。。

ktakusya
質問者

補足

何度もすみません。 確かに同じ値が入力されています。 それを元にVLOOKUPで同じ値が入っているセルの行の値を引っ張ってきているつもりです。 実際それで出来ています。 フィルタオプション・並び替えですが、 元データの並び替えをしてはいけないことになっているので無理です。 LOOKUPで色々試してはいるのですが、 やはりVLOOKで検索の型をTRUEにしたとき・Falseにしたときと同じ結果です。 なんとかならないでしょうか・・・

  • vista2446
  • ベストアンサー率46% (131/279)
回答No.3

質問文には「B1を検索値」とありながら、数式では「$A1」と書かれています。どちらを検索するのでしょうか? B1が検索値だとしたら・・・・・B1の値が○○シートのA列にあるのでしょうか? A1が検索値だとしたら・・・・・数式通りに値が返ってくるはずですが。。。 ○○!A1:C5で、B列を検索対象としたいとか?そうであったならVLOOKUPを使わず、LOOKUPでよろしいかと。。。 VLOOKUPは範囲の一番左列を検索します。しかも、あらかじめ昇順でソートしておかなければならなかったような記憶があります。

ktakusya
質問者

補足

すみません。 B1の間違いです。 LOOKUPですか・・・ わかりました。ちょっとやってみます。

  • x0000x
  • ベストアンサー率52% (67/127)
回答No.2

>=VLOOKUP($A1,○○!$A$1:$C$5,1,0) 範囲「○○!$A$1:$C$5」内で「○○!のA列」から「$A1」に一致する「1」列目(=○○!A列の値)を抽出する意味ですが、 >一番最初にB列に基準となる列を抜き出し、B1を検索値、 の意味が不明です。 検索対象と抽出列の誤りでは? >=VLOOKUP($A1,○○!$A$1:$C$5,1,0) が正しいが検索できない場合は、セル書式の表示形式が異なる場合に抽出できないことがあります。 たとえば、「○○!$A$1:$C$5」のA列が数値で検索する「$A1」が文字列の場合は、表示形式を合わせるか、 =VLOOKUP(VALUE($A1),○○!$A$1:$C$5,1,0) の様に関数で形式をあわせる必要があります。

ktakusya
質問者

補足

説明不足でごめんなさい。 VLOOKの式が間違ってました。 実際には$A1ではなく$B1が始まりです。 あらかじめ抜き出したB列を基準にして、 ○○のA列を抜き出したいという意味です。 おそらくVLOOKでは無理だと思うのですが・・・

回答No.1

説明が良く理解できませんでしたが B列に検索したいデータがあって、 A列が検索対象のデータ列となっていて 検索データそのものを抜き出したいと いうことですね? それならば 特にに大きな間違いはないようですが・・。 どこかで単純ミスしているだけだと思います。 B列が検索キーワードのある列とするなら、 VLOOKUP($B1… としたらいかがでしょう?

ktakusya
質問者

補足

こちらも説明不足でした。 元の式がVLOOKUP($B1・・・の間違いです。