• ベストアンサー

エクセル2002でVLOOKUP関数と範囲の拡張

エクセル2002を使っています。 VLOOKUPでデータを取り出すときに違うデータが取り出されてしまいます。 画像の様に、T1セルに 東京 と入力した場合 M列から東京を探し T2列から下に表示させたいと思います。 画像ではデータは3つになっていますが、9000行ほど有り、今後も増えていきます。 ご存知の方、よろしくお願いいたします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! No.1・2さんと一緒のやり方になりますが・・・ 画像ではP列を使っていないようなので、P列を作業列とします。 P2セルに =IF(OR(T$1="",M2<>T$1),"",ROW()) という数式を入れオートフィルでずぃ~~~!っと下へコピーしておきます。 そしてT2セルに =IF(COUNT($P:$P)<ROW(A1),"",INDEX(A:A,SMALL($P:$P,ROW(A1)))) という数式を入れ行・列方向にオートフィルでコピーしてみてください。 おそらくご希望通りの表示になると思います。m(_ _)m

gekikaraou
質問者

お礼

回答ありがとうございます。 やってみました。 見事希望通りの表示が出来て、助かりました。 ありがとうございいます!

その他の回答 (2)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

回答No1ですがお示しのようなケースではVLOOKUP関数を使うことは適当ではありません。 VLOOKUP関数では東京を検索する場合には検索する表の範囲内で東京のデータが最も左側の列にあることが必要です。例えば東京のデータがA列に有るような場合でしたらよいでしょう。今回の場合にはM列にあるのですからM列からO列までのデータだけを表示させるのでしたら出来ないことはありませんが今回のケースでは無理なことになります。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

作業列を作って対応するのが分かり易くデータが多くなっても計算に負担のかからない方法です。 Q2セルに次の式を入力して下方にドラッグコピーします。 =IF(M2="","",M2&COUNTIF(M$2:M2,M2)) そこでT1セルに東京のように検索する名前を入力します。 T2セルには次の式を入力してAH2セルまでドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(ROW(A1)>COUNTIF($M:$M,$T$1),"",IF(INDEX($A:$O,MATCH($H$1&ROW(A1),$Q:$Q,0),COLUMN(A1))="","",INDEX($A:$O,MATCH($H$1&ROW(A1),$Q:$Q,0),COLUMN(A1)))) データが新たに追加されても自動的に表が変わります。

gekikaraou
質問者

補足

回答ありがとうございます。 Q列を作業列にして、T1セルに手入力したまでは良かったのですが、T2セルに =IF(ROW(A1)>COUNTIF($M:$M,$T$1),"",IF(INDEX($A:$O,MATCH($H$1&ROW(A1),$Q:$Q,0),COLUMN(A1))="","",INDEX($A:$O,MATCH($H$1&ROW(A1),$Q:$Q,0),COLUMN(A1)))) を入力すると #N/A のエラーが帰ってきます。

関連するQ&A

  • excel vlookup関数で

    とあるセル(例えばH2)に、別シートのデータの名前か顧客番号を入力すると、E4セルに名前、E6セルに顧客番号が表示されるようにしたいのですが、過去ログを見てもどうにもやり方がわかりません。 vlookupでデータの左端の列にある顧客番号を入力して表示させるだけなら当然できるんですが、2列目にある名前を入力した時も表示させる事は可能でしょうか。 回答よろしくおねがいします。

  • VLOOKUP関数を使いたいのですが

    エクセル2002です。  「出荷」という名前のシートと「金額」という名前のシート、2つのシートがあります。  金額シートのA列には、商品の名前(例:りんご)が300行ぐらい入力されていて、B列には、その商品の値段が入力されています。A1には「りんご」B1にはその値段「100円」と入力されているとします。  「出荷」シートには、お客様に渡す領収書を入力してあります。  出荷シートのE10のセルに商品名「りんご」と入力すると、その下のE11のセルに、「金額」シートのB列に入力してある値段「100円」が、VLOOKUP関数で表示されるようにしたいです。  よろしくお願いします。  もし出来ないようであれば、なぜ不可能なのかも教えていただけるとありがたいです。

  • エクセルのVLOOKUP関数に似た操作について

    VLOOKUP関数を使用すると、ある列のデータを検索してほかの列のデータを表示するということができると思いますが... この検索する列を2列にできませんか? 例えば、A列には上から 0,0,1,1 B列には上から 0,1,0,1 C列には上から A,B,C,D と入力されていたとします。そして、適当な隣り合ったセルに「0」,「1」 と入力した時に他のセルに、自動的に「B」と表示させたいです。 どなたか教えてください。よろしくお願いします。

  • ExcelでのVLOOKUP関数について

    キー1を1000倍したうえで完全一致のVLOOKUP関数を使うと#N/Aエラーが発生します。 表示上は同じように見えますが内部的に異なる値となっているのでしょうか? 試しにエラー行に対して、キーとターゲットとなる当該セルを「=」でつないで確認しても「TRUE」となります。 添付画像は、 検索先としてA列に基準キーを130.168~130.192(step 0.001)で各行へ入力し、B列はA列を1000倍、C列はB列をROUND関数で整数値に丸めたものをキーとしました。 D列にVLOOKUPで参照する値を入力し、E列以降で以下の異なるパターンで値を参照しています。 (1)【E・F列】 ・E列に整数値をキーとして130168~130192(step 1)で入力。 ・E列をキーとしてB~D列のVLOOKUP関数としています。   『=VLOOKUP(E3,B:D,3,FALSE)』 (2)【G・H列】 ・G列にE列/100をキーとして計算。 ・G列をキーとしてA~D列のVLOOKUP関数としています。   『=VLOOKUP(G3,A:D,4,FALSE)』 (3)【I列】 ・E列をキーとしてC~D列のVLOOKUP関数としています。   『=VLOOKUP(E3,C:D,2,FALSE)』 シートを複製し、キーの入力範囲を0.001~0.025(E列は1~25)にした場合はエラーがでませんでした。 その他の確認としてはTEXT、JIS、ASCなどを組み合わせて文字列としたキー同士のVLOOKUPではエラーにならず値を参照できています。

  • Excel 2007のVLOOKUP関数について

    Excel 2007のVLOOKUP関数について教えてください。 A列に(大根、人参、キャベツ)の3項目をプルダウンメニューで 選べるように設定します。 A列にある項目を選択した時に B列にそれぞれの数字が自動で表示されるように 設定したいと思います。 大根→1 人参→2 キャベツ→3 A列のプルダウンメニューは「データ入力規則」の元に値に 直接項目を入力します。 VLOOKUP関数を使用すると思いますが、 どのような方法で使用すればよいのかわかりません。 教えてください。

  • EXCELのVLOOKUPで

    アンチョコを見てC8のセルに「1直」と入力したら 勤務時間というシートのA列からI列までの中から2番目の行に あるデータを表示するということを次のように設定できました。 (説明あってるかな?) IF(C8="","",VLOOKUP(C8,勤務時間!A:I,2,FALSE))←D9のセルに入力 それで「直休」とC8のセルに入力した場合、 A~Iまでの行には何も表示してほしくないのです。 勤務時間のシートにはもちろん空白になってます。 ところが「直休」を選択するとA~Iに「0(ゼロ)」が表示されてしまいます。 「直休」と入力したらA~Iを空白にすることはできませんか? またできるならなんという式を入れればいいのでしょうか? よろしくお願いします。 わからないことがあればもちろん補足いたします。

  • エクセル VLOOKUP関数で、あてはまるものをすべて表示させる方法はありますか?

    VLOOKUP関数で、式を入れると 選択した範囲の中で、一番最初の行に入力されているものが値として出てきます。 これをあてはまるもの、すべて表示されるようにはできないのでしょうか?     A     B      1  ゆり    100 2  ばら    150 3  きく    120 4  ばら    180 5  きく    160 6  きく    125 このような元データーがあったとして A100に  きく と入力するとします。 =VLOOKUP(A100,b1:c6,2,0) といれた場合、一番最初のきくのデーター、120のみが表示されますが、これをきくのデーターすべて、120.160.125と表示されてほしいのです。 できれば1つのセル内に表示したいのですが、これはエクセルでは不可能でしょうか? どうぞよろしくお願いします。

  • エクセルのVLOOKUP関数について

     エクセルで、VLOOKUPを使っています。  A3に 1 と入力すると、Aの5行目11行目までから、別のシートに入力してある A1~G1の項目の情報が1列にババッと入力されています。    そのVLOOKUP関数を使おうと思うのですが、この関数は数年前に入力したもので、式の作り方がわからなくなってしまいました。 前使った式は =VLOOKUP(F2,'C:\Documents and settings\office\デスクトップ\新しいフォルダ (2)\[ガイドブック.xls]Sheet1'!1:65536,11,0) です。 この式の意味が、今見てもさっぱりわかりません。 この式がどういう命令になっていたのか・・・・(特にSheet1からわからない)、 もし出来たら教えていただけるとありがたいです。 間違っている箇所があったらそれも教えてくださるとありがたいです。

  • エクセルでHLOOKUP関数の選択範囲について

    エクセルでHLOOKUP関数を使って、検索したいのですが、 シートは、一覧表のシートと データが入っているA101、B203、C305、...シートは300シートくらいあります。 一覧表のシートには、下のような表になっていて、      A列  B列  C列  D列 ...          1003、1004、1005、1006、... 2行目 A101  3行目 B203 4行目 C305       .       .       . データのはいっているシート、A101は下の表になっています。      B列 C列 D列、・・・、Z列 2行目 1004、1005、1006、... 3行目 100、 200、 150、... 一覧表のB列の2行目には HLOOKUP(B2、シートA2のB2:Z3、2行目、FALSE) という感じで、シート名をセルA2のものを参照にして 探して表示させ、B列、C列、D列の2行目から下の行も 表示させたいのですが、うめくできませんでした。 INDIRECT関数を使ってみましたが、セル範囲が無効という エラーがでてしまいます。↓こんな感じで入力してみたのですが... SUMPRODUCT((INDIRECT($A2&"!$B$2:$Z$3"))=$B$1,(INDIRECT($A2&"!$B$2:$Z$3"))) 1つづつデータを見て手打ちはデータが多く、 どんどんデータが増えていくので できれば関数を使って表示させたいと思っています。 詳しい方いらっしゃいましたら、どうか教えてください よろしくお願いします。

  • キーワードを入力すると、ExcelのVLOOKUP

    キーワードを入力すると、ExcelのVLOOKUP関数のように、表の中の一番左側の列からキーワードと同じ値のセルを探して、その行にある別のセルの文字列を、ある特定の場所に自動入力させることはできますか?

専門家に質問してみよう