• ベストアンサー

表引きの関数で困っています

よろしくお願いします VLOOKUP関数ですが うまく表引きできません  2列の表でA列B列にデーターをいれた表があります D1には 式 =vlookup(D1,A1:B10,2,false))です D1にA1からB101での表を参照して 数値を引っ張っています いつもはうまくいきますが A1が 通し番号の場合はOKで ランダムな数値になりますと 引っ張れません 同じ数値が複数あると 最初のものだけ ひろいます 通し番号でなくて ランダムな数値でも 引っ張るにはどんな関数なんでしょうか サルにもわかるように やさしく 教えてください  

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

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

VLOOKUPは基本中の基本なのに回答がつかない理由はたぶん、こんなところです。 ・正しく状況が書かれていない  D1セルに=vlookup(D1,A1:B10,2,false)を入れると「循環参照」のエラーになります ・VLOOKUPのヘルプには、 「FALSE を指定すると、検索値と完全に一致する値だけが検索されます。この場合、範囲の左端の列にある値を並べ替える必要はありません。検索値と一致する値が範囲の左端に複数ある場合は、最初に検索された値が使用されます。」と書いてあります。 つまり、A1からB101の部分はランダムな並び順でも問題ないのですが、同じ数値があると、上に引用した通り最初のものだけひろいます。 その「同じ数値が複数あると最初のものだけひろいます」ということが問題であるかのように読めます。結果を表示するセルはD1セル1つしかないのに、同じ数値が複数あるときにどのように出てほしいと思っているのかが読む側に伝わりません。 もしまだ解決していないならば、その辺を補足されてはいかがでしょう。

kimari14
質問者

補足

返信遅れましてすいませんでした D1セルではなく E1セルに書いた関数式は質問のとおりですが  D1のセルの値とおなじものを  表A1:B10から引っ張って E1に表示させたいのです  A1列にD1と同じ数値が複数あっても E1セルにはひとつしか返してきません  いつもはA列は通し番号で ランダムな数値はB列ですので  同じ数値が二つあることはなく 答えはひとつ返してくれます  なんの問題もなく できていたんですが  今回は列が逆になった表でして (A列にランダム B列は通し番号 表の形は変えられません)  どうしたら 複数の答えを表示したらいいか 教えていただきたいのです これでどうでしょうか    

関連するQ&A

  • 表引き

    表引き関数  再質問です 仮に A    B  C   D   E  A1    2  1   1   A2    4  2   1 A3    5  3   2  A4    6  4   4 A5    1  5   6 A6    2  6   2 BとCに2列の表があります E1には =vlookup(D1,B1:C6,2,false)の関数の式を入れました B列はランダムな数値 C列は通し番号です いつもは B列に通し番号 C列はランダム数値なのでD列の数値に対してのE列の表引きは問題ないのですが 上のように B列がランダムな数値 C列が通し番号の場合 B列に同じ数値が複数個あるとき E列に返してくるのは その数値の最初のひとつだけ  上の仮の表 では D列の数値に対して E1は 以下     E列  5  5  1と6  2  4  1と6 ですが この1と6の6が表引き出来なんです この6も表引きしたいのです どうすればいいのでしょうか 他の関数と組み合わせるんでしょうか よろしくお願いします

  • エクセルで表引き

    こんにちは いつもお世話になっています。  Windows7、エクセル2007です。  初心者のため以下の関数が可能かどうかも判断できませんが教えてください。 勝手ながら、作業列を使う場合はD列以降にお願いします。ピボットテーブルは不要です。 A列に1からの連番。B列に名前(表引きに直接関係はありませんが)。C列に記号が3種類あります。 C列の記号ごとにA列の番号をA16セル以下に引いてくる関数を教えてください。 具体的にはJPGをご参照ください。 A16~19にC列の記号Iを持つA2~11の番号 A20~23にC列の記号IIを持つA2~11の番号 A24~27にC列の記号IIIを持つA2~11の番号 実際はA列の連番は50ぐらいあります。 引いてくる先のセルA16以下のセルは余裕を持たせてあります。 A16以下に検索値のようなものはありませんが大丈夫でしょうか。 厚かましいお願いですが応用が利く、わかりやすい関数も希望しております。 よろしくお願いします。

  • excelの関数をしえてください。

    こんにちは。exceldでの関数で質問です。 使用関数と検索範囲の指定の方法を教えてください。 表は2つあります。 表1は行タイトルがクラス名(A~D)、列タイトルに1~25までの級を表す数字の入った表です。参照表です。  A B C D 1 ○ ◇ ■ △ 2 △ ○ ◇ ■ (内容はすべて違うものです) 3 ■ △ ◇ ○ 4 5 表2は関数を利用して表1より該当するセルの内容を 表示したいのです。 表2 A列にクラス(A~D 表1と同じ項目) B列に級 C列に数値 D列に前年度数値  クラス 級 数値 前数値 A 2 △ △ C   5 ○   ○  B 1 D 3 C列にはD列の前数値の近似値を表1より参照したいのです。その際にクラスわけからAであれば表1の Aクラスの列から近似値をさがしたいのです。 B列にはC列で求めた近似値が表1でどの級かを 求めたいのです。 表2のクラスわけがランダムなのと、 検索範囲がクラスによって異なる箇所となるので 検索範囲の指定の方法、さらにはどの関数を 使用して行えばよいのかわかりません。 説明がわかりづらいかと思いますが、 宜しくお願いします。 OS:NT4.0 excel2000 を使用しています。

  • VLOOKUP関数が#N/Aで使えません

    こんにちは。 エクセルで表を作っています。 VLOOKUP関数を使いたいのですが、エラー#N/Aが出て使えません。とてもシンプルな式なのに、何がだめでできないのか全く解かりません。 式は、=VLOOKUP(C3&D3,A7:D12,4,FALSE)です。 ちなみに、=VLOOKUP(C2,B7:D12,3,FALSE)にはちゃんと反応して数値を返してくれます。違いは検索値だけなのですが、数字になっているので、文字列に指定もしました。違うセルで=C3&D3は返してくれています。 何がいけなくてできないのか、教えていただけると助かります。 よろしくお願いします。

  • エクセル関数について教えてください

    AからZまでのチームにAさんからZさんがそれぞれ点数をつけます。 各チームが対戦して勝ったチーム名を入れるとそれぞれつけた点数を反映させる表をつくりたいのです。 私が使ったのは、 「=VLOOKUP($B$2,sheet1!$B$1:$AH$26,2,FALSE)」 なのですが、この式を横にコピーすると列番号が2のままなので数値が正しく反映されません。 列番号を2,3,4と繰り上げるにはどうしたらいいのでしょうか? それとも使おうとしてる関数が違うのでしょうか? よい方法があれば教えてください。

  • 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ではエラーにならず値を参照できています。

  • 表引きのような関数を教えてください

    お知恵を貸してください。 それぞれのシートにAブロックからDブロックのコードと数値を登録しておいて シート1にそれぞれの列にそのコードを打ち込んだら合計の数値が計算され出てくるように したいのですがよくわかりません。教えてください。 シート1 A列  B列 C列 D列 合計 AAA B1 A1 1  200 Aブロック AAA 100 ABA 110 Bブロック B1  50 C3  20 Cブロック **  10 A1  20 Dブロック 1   30 4   10

  • エクセルの表引き

    こんにちは いつもお世話になっています。 Sheet1に以下の表があります。 すみません、表示がうまくいかず、A列には文字列、B列には数字が入ります。 A列に数字があるように表示されていましたらB列に表示されているものとしてみてください。 Sheet1 A        B 和歌山    2 愛知    3 東京    1 大阪    2 栃木    1 石川    3 A列のデータに重複はなく、B列のデータには重複があります。 B列の数字を検索値として振り分けるような形でA列の値を表引きしたいです。 表引き先は Sheet2のB列の複数セルに1が入力済みの状態。 Sheet3のB列の複数セルに2が入力済みの状態。 Sheet4のB列の複数セルに3が入力済みの状態。 例えば Sheet2 A        B    1    1    1    1    1 Sheet3 A        B    2    2    2    2    2 Sheet4 A        B    3    3    3    3    3 以上の各シートが以下のようになるようにしたいです。 Sheet2 A     B 東京 1 栃木 1 1 1 1 Sheet3 A     B 和歌山 2 大阪 2 2 2 2 Sheet4 A     B 愛知 3 石川 3 3 3 3 Sheet2-4のA列に各B列のデータに一致する値をSheet1から表引きしたいです。例えばSheet2に関して、東京、栃木と出てしまったら後のA列は空欄になるようにしたいです。A列数字が表示されていたらB列にあるものとしてください。 フィルタとかでの手作業でなく、何とか関数で持ってこられないでしょうか。 作業列とか必要でしたら教えてください。 わかりにくい表現ですみません。 よろしくお願いします。

  • Excel検索関数で

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

  • VLOOKUP関数の範囲をセルで指定したいと思っています。

    VLOOKUP関数の範囲をセルで指定したいと思っています。 B1:参照シート名(VLOOKUP関数で使用する範囲があるシート) C2:範囲の開始位置 E2:範囲の終了位置 B3:G3:列番号(B3の値は、B6:B8の範囲で使用する列番号、 D3の値は、D6:D8の範囲で使用する列番号) これらのセルに入力された情報をもとにB6:G8の範囲にVLOOKUP関数を 反映させたいと思っています。 例えば、 B1に参照シート名「2ケタ」 C2にVLOOKUP関数の範囲の開始位置「A5」 E2にVLOOKUP関数の範囲の終了位置「G7」 B3に範囲の列番号「2」がある場合 B6に「=VLOOKUP(A6,'2ケタ'!A5:G7,2,0)の関数を入力。 B2に参照シート名「3ケタ」 C5にVLOOKUP関数の範囲の開始位置「B5」 E2にVLOOKUP関数の範囲の終了位置「H7」 C3に範囲の列番号「3」がある場合 C6に「=VLOOKUP(A6,'3ケタ'!B5:H7,3,0)の関数を入力。 といった感じです。 現在、B6に「=VLOOKUP($A6,INDIRECT($B$1&"!a5:g7"),INDIRECT("$b$3"),0)」と 関数を入力して、VLOOKUP関数の「範囲の参照シート名」と「列番号」の情報は セルから持ってくることができました。 しかし、「a5:g7」という範囲だけは、INDIRECT関数をうまく入れることができません。 どのように関数を入力したら、上手くいくのか、教えていただけないでしょうか。