• ベストアンサー

エクセルの VLOOKUPで2番目の結果を参照

重複する値を含む表のVLOOKUPで、上から検索した結果の2番目を参照したいのですが。 Sheet1のA列に製品名、B列に型番が入っているような表で、初回の製品名(A列)には型番が仮称で入っています。 次に色んな仕様が決まったら、Sheet1の最下行に製品名と正式な型番が入ります。 次にSheet2 で製品名を入れると、Sheet1からVLOOKUPで正式な型番(2番目の結果)を参照するようにできないでしょうか? さらには希望する順位の値が参照できると更にありがたいのですが。 2番目限定でも十分です。

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

  • ベストアンサー
  • Mathmi
  • ベストアンサー率46% (54/115)
回答No.2

一番手っ取り早いのは、sheet1に検索用の列を追加する事です。 自分がするなら ・shet1のA列を挿入。 ・A1に=B1&COUNTIF(B$1:B1,B1)、下にオートフィル ・検索関数として=VLOOKUP([検索文字列及び番号],Sheet1!A:C,3,FALSE) といった感じでしょうか。 この[検索文字列及び番号]は任意に変更して下さい。 例えばA1セルに製品名、B1セルに何番目を検索するかの番号が入力されていた場合、A1&B1にする、等です。

akira0723
質問者

お礼

これは目からウロコで試してみようと思います。

akira0723
質問者

補足

検索したい(入力した)セル内容に2を&で付けてた文字列を、元のデータのセル内容にCOUNTIFのNoを付記した表からVLOOKUPで検索することで任意の発生回数の値を参照できることを確認しました。 幸い対象のBookは当方が管理している表なので列の挿入が可能なのでこれで何とかできそうです。 COUNTIF関数の新しい使い方は非常に参考になりました。

その他の回答 (7)

  • msMike
  • ベストアンサー率20% (363/1775)
回答No.8

[No.7補足]へのコメント、 添付図参照 「最新番目」でなく「2番目」とする改訂版です。 Sheet2!B1: =IFERROR(INDEX(Sheet1!B$2:B$8,SMALL(IF(Sheet1!A$2:A$8=A2,ROW(A$2:A$8)),2)-1),"非該当") 【お断り】上式は必ず配列数式として入力のこと 【お願ひ】回答者を戸惑わせない書き方を最初から。つまり、チコちゃんに叱られないような書き方を頼ンますネっ! もう、出直さなくて結構です。

akira0723
質問者

お礼

何度も丁寧にご回答いただき感謝です。 半日かかってどうにか見本通りに動くまでになりましたが、本チャンの表だとなぜかうまくいきません。 配列数式を使ったことがないので、この辺が実力かと。 ほかの方法で検討してみます。 お手数をおかけしてしまいました。 次回は図が添付できるようにしてから質問させていただきます。

  • msMike
  • ベストアンサー率20% (363/1775)
回答No.7

[No.6]で「添付図参照」と言い乍ら、忘れていたものです。m(_._)m

akira0723
質問者

お礼

質問内容が明確ではなくお手数をとらせてしまい申し訳ありません。 出直します、ごめんなさい。

akira0723
質問者

補足

A列の各製品名の2番目の値を参照したい、が要求でした。 つまり製品1なら該当なし(2つ目の製品1が入力されていないので)、製品2は型番5、製品3は型番6、製品4は該当なし。 質問は悪くすみませんでした。

  • msMike
  • ベストアンサー率20% (363/1775)
回答No.6

迅速な補足無しなので勝手乍ら、最新番目の順位の値が参照する方式をば。 添付図参照 Sheet2!B2: INDEX(Sheet1!B$2:B$8,MAX(IF(Sheet1!A$2:A$8=A2,ROW(A$2:A$8)))-1) 【お断り】上式は必ず配列数式として入力のこと

akira0723
質問者

お礼

ご丁寧に何度もご回答感謝です。 VLOOKUPで何とかなると思っていましたが、残念ながら当方にはハードルが高い内容のようで出直します。

  • msMike
  • ベストアンサー率20% (363/1775)
回答No.5

》 希望する順位の値が参照できると更にありがたい 「希望する順位の値」とはどういうことですか? 》 2番目限定でも十分です 貴方が先走って妥協する必要もないけど、2番目とか1番目とかを含むサンプル表を行列番号入りで提示されたい。最大何番目まで存在するの?

akira0723
質問者

補足

Sheet1のA列にABCという製品名が何度か出てきて、複数の各ABCに対応する情報がB列に記載されていて、Sheet2でABCと入力した時に、VLOOKUPで検索したときに、Sheet1のB列の2番目のセル値を参照したいのです。 分かりにくい質問内容がますますわかりにくくなってしまったようですのでここでやめます。 説明下手でごめんなさい。 会社のPCではなぜか、表の添付がうまくいなないので皆様に迷惑をかけているようです。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

これは無理です。エクセルの、検索に関連したVLOOKUP(HLOOKUP,LOOKUP)、MATCH関数などは、最初に見つかったものしか検索(結果を返して)くれません。  不便だなあと思うときがありますが、元のソフトからの継承や歴史的なこと等の事情があるのでしょう。もう1つ何番目を言うのを指定する引数(第5引数)を設けてもらえばよいのですが、MSで検討されるかどうかわからない。 VBAを勉強すれば、同等のことはできます。勉強してみて。

akira0723
質問者

お礼

ご回答ありがとうございます。 やはりVLOOKUP単独ではどうしようもないということですね。 参考になりました。

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

添付図のようなSheet1のデータで考えました。 2番目の型番の表示は、Sheet2のセルC2で、 =IFERROR(VLOOKUP(A2, INDIRECT("Sheet1!$A$"& (MATCH(A2,INDIRECT("Sheet1!$A$2:$A$" & COUNTA(Sheet1!A:A)),0)+2) & ":B" & COUNTA(Sheet1!A:A)),2,0),"なし") とします。Sheet1のデータが増えても対応します。 このまま関数で、3番目、4番目の型番の表示を行うのは生産性が悪いので、Vlookup関数を拡張するユーザー定義関数を作りました。標準モジュールに貼りつけます。何番目まででも表示しますが、なければ「なし」を表示します。 使い方は、 =exVlookup(検索値,範囲,列番号,番目) です。ほとんどVlookup関数と同じです。 添付図セルC8の例 : =exVlookup($A8,Sheet1!$A$1:$B$9,2,2) Function exVlookup(sch As Range, Rng As Range, dt As Integer, ord As Integer)  Dim r As Integer   '// 行カウンタ  Dim wk As Variant  '// ワーク変数  Dim cnt As Integer  '// 一致カウンタ    With Rng.Cells(1, 1)   For r = 1 To Rng.Rows.Count    If .Offset(r, 0) = sch.Value Then     cnt = cnt + 1     If cnt = ord Then      wk = .Offset(r, dt - 1)      Exit For     End If    End If   Next  End With    If wk = 0 Then   wk = "なし"  End If  exVlookup = wk End Function

akira0723
質問者

お礼

早々のご回答ありがとうございます。 2番目を参照する関数は当方では、色んな表で期待通りに動くまでに相当の時間がかかりそうで、難しすぎて使えそうもなく。 VBAは当方の知識では極力使わない方が安全、というレベルなので・・・ わざわざコードを作成してくださりありがとうございました。

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.1

抽象的な質問なので具体的な回答は無理かと思います。 サンプルデータ(列記号と行番号も含む)を提示して、抽出結果も例示してください。 考え方としてはVLOOKUP関数に拘らず他の関数を組み合わせた数式で対応された方が良いでしょう。

akira0723
質問者

お礼

いつも的確なアドバイスありがとうございます。 早々に色々なご回答をいただいており、確かに他の関数を組み合わせても解決できそうですが残念ながら当方の知識ではVLOOKUPしか使いこなせないと思われまず。 これから各ご回答の検証をやってみます。

関連するQ&A

  • エクセルの VLOOKUPで2番目の結果を参照

    先日ここで同じ質問をさせてもらって、その時にCOUNTIFを使う方法を教えていただいてこの方法なら何番目の値でも簡単に指定できると思い実際に試してみたのですが当初は2つ目までしか考慮していなかったのですが、シートによっては同じ値(A123)が2回以上入力されるケースもあることがわかりました。 そこで<表ー1>のC8にABC123と入力されたら左の列にC8&COUNTIF関数で何番目のABC123かを表示させて、この末尾2のセルの3列目(X123)を<表ー2>の該当する品名の横に表示させたいのです。 添付の場合A123の横にX123と入るようにしたいのです。 A123が2回しか出てこないなら、VLOOKUPで簡単に検索できそうなのですが、それ以上出てくることもあるのでハタと困ってしまいました。 ちなみに、VLOOKUP(F3&COUNTIF( ),B:D,3)のような使い方はできないのでしょうか? 上記の使い方ができなければ、表ー2にも補助カラムを追加してB列と同じ内容にすることは可能です。

  • excelのvlookup関数で勝手に引用符がつく

    excelのvlookup関数を使ってあるシートを作っています。 「basedata」というシートに3列表をつくり、1番左にキー、2番目と3番目に値をいれ、この表を別シートから検索にいっています。 検索元のシートには 文字列 文字列からMID関数で切り出した数値 検索1 検索2 の4列があります。 やりたいことは2列目の切り出した数値を元にして、basedataのキーを検索しにいき、検索1の列にbasedataの2列目の値を、検索2に3列目の値をいれたいと思っています。 =IF(ISERROR(VLOOKUP(B2,basedata!A2:E56324,2,0))=TRUE,"",VLOOKUP(B2,basedata!A2:E56324,2,0)) という式を検索1のセルに入力した場合、何も表示されず、B2に実際に入っている値を引用符なしで直うちすると値が表示されます。ステップインで分析すると、参照にした場合、参照値が引用符で囲われており、これが原因かと思うのですが、何か回避方法はないでしょうか。

  • エクセルのVLOOKUPの複数参照について

    エクセルのVLOOKUPの複数参照について シート2(kokunai)に A列 B列 1000 シャープ 1010 ソニー 3050 パナソニック とあります。 シート3(yunyuu)に A列 B列 2000 IBM 2001 HP とあります。 シート1のC列に打ち込んだ数字を元にD列にメーカー名を表示したいのです。 D列に IF(C1="","",IF(ISERROR(VLOOKUP(C1,kokunai,1,0))="FALSE",VLOOKUP(C1,kokunai,2,0),VLOOKUP(C1,yunyuu,2,0))) と数式を打ちましたが、エラーが帰って来ます。 どうすれば良いでしょうか?

  • Excel 2007 vlookupについて

    Excel 2007 vlookupについて 同じシートでA列とB列の2列にある型番で一致するものをC列に表示させたいです。 実際A列の型番は一意の番号です。 B列の型番は同じ番号がございます。 型番1は100行ぐらい。 型番2は300行ぐらい。 C列にどのようなvlookupを記載すればよろしいでしょうか。 ※C2以降に結果が表示されるようにしたいです。

  • Excelの参照か、VLOOKUPでできるか

    Excelの参照か、VLOOKUPでできるか わかりませんが教えてください。 MS2007です。 画像を見てください。 一番左に「1」これは日にち。5月なら5/1と考えてください。 次に塗り潰した縦のアルファベット。これが項目。 次には「A1」から始まる数字が付属した縦のデータセルがK列まで11列。 L,O,R,U,X,L1もデータが入ります。 このシートはFAX用となっていて二分割して 作成した表示になっていますが本来は下の部分も横にくっついて一列です。 シート5月には同じつくりのシートがあり「1」(日にち)に付随した 横一列の形式で作成してあり、それは縦に1~31、 つまりは5/31までデータが入力できる連続したつくりになっています。 この「5月」のシートのデータを、日にちごとに「FAX用」の表の枠に自動で移る(参照?) 出来るようにしたいのですがよくわかりません。 たとえば、「5月」シートの5/1の「1」を「2」にすると「2」(5/2)に付随したデータが 「FAX用」の「1」を「2」にすると付随した横列に自動で数値が反映される感じです。 よろしく御願いします。

  • Excel VlookupとIFのネストについて

    シートAでシートBの値をVlookupで引っ張っています。 ここで、値をそのまま返すだけではなく、値がはいっていれば●で返すようにしたいです。また、参照値がの列が空白の場合があり、エラーを表示させないようにもしたいのです。 =if(参照値="","",vlookup) これにどう足せば、完成できるのでしょうか? この形で考えているからいけないのでしょうか? 初歩的な質問ですが、よろしくお願いいたします。 (ネストはとっても苦手です・・・)

  • VLOOKUPの複数参照先

    こんばんは。 エクセルのVLOOKUPでの質問があります。 よろしくお願いします。 1つのbookの中にA,B,C,D...とシートがあります。 Aのシートにて、VLOOKUPを使ってデータの参照をしたいのですが、 B,C,D・・の複数のシートを参照先にしたいのですが、 可能なのでしょうか。 検索先の文字列に応じて検索シート先を変えられれば・・と 思っています。 もう一つ、参照先に目的の値がなかった場合、#N/Aが表示されるのですが、これを1などの数字にすることはできないでしょうか。 お願い致します。

  • 【エクセル】 VLOOKUPについて

    エクセル関数の VLOOKUPは範囲選択した表の左端の列しか検索対象に出来ないのでしょうか? 例えばSheet1に↓のような表があって     A      B     C     D     E 1 機種名   購入日   シリアルNo   メーカー名  ・・・・  2  X     07/01/01   123X         LLL 3  Y   07/02/03    456Y       MMM 4  Z   07/05/21    789Z        NNN 5  ・・・ 6  ・・・ Sheet2に↓のような表を作って、   A     B 1   シリアルNo   機種名 2   456 3   789  4   123 5    432 B列にVLOOKUPでsheet1の表から、シリアルNoに対応する機種名を表示 させることは出来ますか? 特にVLOOKUPにこだわってるわけではないので、他の方法でも出来る のであれば良い方法を教えてください。よろしくお願いします。

  • エクセル VlookUPで違う結果が出てくる

    エクセル2010で何度も使っているVlookUP関数なのでですが、今日は何故か全くうまく行かず、原因が分かりません。 氏名が入った表同士で、Sheet1の氏名の横の列にSheet2の参照範囲からデータを持ってくるだけの作業なのですが、全く違う人(場所)のデータをもっともらしく引っ張ってくるのですが。 横にコピーすると、その違う人の横のセルのデータを持ってきます。 詰まり参照は出来ているのですが、全く違う「氏名」の行のデータを参照しているのですが。 この原因分かる方、是非お願いします。

  • EXCEL の VLOOKUP で 結果は正しいのですが・・・・

    EXCEL の VLOOKUP で 結果は正しいのですが・・・・ 2SHEETの EXCEL BOOK で 1SEET目は「台帳」と言う名前です。 検索値は1SHEET目にあり、検索対象は2SHEET目にあります。 2SHEET目の検索範囲に「早得」と名前をつけてあります。 検索の結果は検索値があるか/無いかが判れば良いので、検索範囲の1カラム目(検索キー)を返すようにしています。 2SHEET目のY列に以下の式を入力すると、 結果が返ってくるのですが、 =IF(ISNA(VLOOKUP(台帳!G6,早得,1,0)),"",VLOOKUP(台帳!G6,早得,1,0)) SHEET2上に検索値があると、その同じ行に結果を返したいのですが、違う行に結果が表示(返って)されてしまいます。 例: Sheet1(台帳)のG25の値が、 Sheet2の「早得」の22行目にあった場合、 Sheet2の15行目に結果が表示されるような感じで規則性がつかめませんが、ちゃんと存在するものだけSheet2の関数を入れているY列に返ってきます。正しい結果が返ってきているようなのですが、表示される行がおかしなところに表示されてしまいます。 何がまずいのかさっぱりわかりません。 環境は Windows XP の Office 2003 です。 よろしくお願いいたします。

専門家に質問してみよう