• ベストアンサー

EXCELのVLOOKUPでできますか?

VLOOKUPでできるかどうかわからないのですが、質問します。 BOOK(A)とBOOK(B)がありまして、BOOK(A)がA1かつA2で、BOOK(B)もA1かつA2の時、BOOK(B)のA3のデータをBOOK(A)のA3に返したいとき、どのような計算式を立てればよいのかわかりません。 どうか教えてください。 EXCEL97です。 ACCESSじゃないとだめでしょうか・・・ よろしくお願いします。(__)

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

  • ベストアンサー
  • free-goo
  • ベストアンサー率18% (28/155)
回答No.4

#2のものです。 VBか、マクロですかね。 初歩的なやりかたですが、A列かつB列が同じもので検索となれば、BOOK(B)のA列に 列挿入をして、そこに、予算番号{50}と整理番号{25}の 文字の足し算した結果をいれる 例.B列予算番号 C列整理番号 A列の数式は=B1&C1 結果5025となります。 BOOK(A)で、先ほど記載しましたやりかたで、=if(iserror(VLOOKUP(BOOK(A)のA1&B1,BOOK(B)!$A:$Z,何列目か指定する,false)),”該当なし”,VLOOKUP(BOOK(A)のA1&B1,BOOK(B)!$A:$Z,何列目か指定する,false) これで、キーを見て、存在すれば、指定された何列目が表示され、キーが存在しなければ「該当なし」と表示されます。該当なしの時に 空白にしたければ 数式内の”該当なし”を””にすれば いいですが、どうでしょうか??? 注意として BOOK(B)の列を挿入して文字の足し算で注意が必要です 予算番号  整理番号  足し算結果 1     1     11  問題ないですが 1     11    111 11    1     111 この二つは同じになるので、整理番号のほうを最大桁数に合わせる事を進めます 偉大桁数が4桁の場合は =B1&right(”0000”&C1,4) そうすると、 予算番号  整理番号  足し算結果 1     1     10001  1     11    10011 11    1     110001 これで ブッキングはなくなります。但し VLOOKUP側も同じようにしなければなりませんので VLOOKUP(A1&right(”0000”&B1,4)という具合に うまく説明できなくて すいません。

yuko0909
質問者

お礼

丁寧に教えていただきありがとうございます。 よく読んで、チャレンジしてみます。 がんばります。

その他の回答 (5)

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

#5の22行目の「最右列」と書いたのは、「最左列」の誤りです。済みません、訂正します。

yuko0909
質問者

お礼

ありがとうございました。

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

ご質問を始めて読んだ時、問題の意味が理解できませんでした。#1の補足を読んで判りました。 この質問の難しさ(特徴)は次ぎの2点です。 ------- (1)検索する表が別ブックにある。Book(B)にある。(普通は別列や別シートにあることが多い) (2)検索値が2列に跨って(入力値も検索する表も) 跨っていて、両方一致したものを引いてきて欲しいこと。具体的には、予算番号と整理番号。(普通は1列の値) ------- (2)の解決法(注意事項) ・両列の値を結合したものを1つの列を増やして作る。 もし予算番号と整理番号が数値で入っているとして、1と11も11と1も結合すると同じになってしまうので、2列とも先頭に0を入れて、数字文字桁数を揃えた上で結合する。 =MID("0000",1,4-LEN(A1))&A1&MID("0000",1,4-LEN(B1))&B1のように。4桁の場合の例。 ・表示形式だけを細工して0001のように見えるようにしてもだめです。値を変えたものを別列につくること。 ・結合したコードを作る列の場所ですが、結合したコード-件名―年度-工事件名の順にすること。表範囲指定した最右列に検索値を持ってこないといけないので。 (1)の対処法 テストでブックbb1.xlsを開き、A1:B5に 1 大阪 2 仙台 3 東京 4 静岡 5 名古屋 を入れ、もとのBook1のD1に式 =VLOOKUP(A1,'C:\My Documents\[bb1.xls]Sheet1'!$A$1:$B$5,2,FALSE) をいれた。A1に2と入れると、仙台と表示された。 他ブックを参照するのは(A)[ ]でブック名を囲むこと(B)フルパスは’’で囲むこと(C)表は絶対番地($付き)で表現すること(D)第4引数はFALSEにすること、が注意。 以上を参考・注意事項としてやって見てください。

yuko0909
質問者

お礼

回答ありがとうございました。 教えていただいたやりかたでやってみます。 感謝します。

  • terakura
  • ベストアンサー率20% (4/20)
回答No.3

VBA超初心者ですが・・・ 多分これで出来るかと。 Sub 入力マクロ() a = "BookA.xls" b = "BookB.xls" Windows(a).Activate Cells(2, 3).Select Do While ActiveCell.Offset(0, -2) <> "" 予算番号 = ActiveCell.Offset(0, -2).Value 整理番号 = ActiveCell.Offset(0, -1).Value Windows(b).Activate If ActiveCell.Value = 予算番号 And _ ActiveCell.Offset(0, 1).Value = 整理番号 then 件名コード = ActiveCell.Offset(0, 2).Value 年度 = ActiveCell.Offset(0, 3).Value 工事件名 = ActiveCell.Offset(0, 4).Value Windows(a).Activate ActiveCell.Value = 年度 ActiveCell.Offset(0, 1).Value = 件名コード ActiveCell.Offset(0, 13).Value = 工事件名 ActiveCell.Offset(1, 0).Select Windows(b).Activate Cells(2, 1).Select ElseIf ActiveCell <> "" Then ActiveCell.Offset(1, 0).Select Else Windows(a).Activate ActiveCell.Offset(1, 0).Select Windows(b).Activate Cells(2, 1).Select End If Windows(a).Activate Loop End Sub

yuko0909
質問者

お礼

できるかどうかわかりませんがやってみます。 ありがとうございました。

  • free-goo
  • ベストアンサー率18% (28/155)
回答No.2

データ数は どれくらい ありますか?? 検索して、その中から あれば 引用するのでしょうか そのキーになる部分が、A1かA2に なるのでしょうか?? どちらかに、あると云う前提でいきますと BOOK(B)のA3で =if(iserror(vlookup(BOOK(A)A1,探し先,何列目か,false)),vlookup(BOOK(A)A2,探し先,何列目か,false)),vlookup(BOOK(A)A1,探し先,何列目か,false)これであれば 1つ目のVLOOKで、探した内容が #N/A等のエラーになっても、2つ目のVLOOKで処理をする、列行がちがうのであれば、HLOOKでも 同じですが 質問に対して、違っていたら ごめんなさい できたら 具体的に 教えて下さい(内容を・・)

yuko0909
質問者

補足

補足します。 えっとですね、BOOK(A)は385件、BOOK(B)は73件あります。 やりたいことは、BOOK(A)のA列に予算番号、B列に整理番号なるものが入力されています。さらに、C列に年度、D列に件名コード、P列に工事件名を入力したいです(現在C,D,P列は空白です。) それで、BOOK(B)のA列には予算番号、B列には整理番号、C列には件名コード、D列には年度、E列には工事件名がそれぞれ入力済みです。 BOOK(A)の予算番号かつ整理番号の組み合わせが、BOOK(B)の予算番号かつ整理番号の組み合わせと合致した時、BOOK(B)の件名コード、年度、工事件名をBOOK(A)の各C,D,P列に返したいのです。 ややこしくてすみません。 どうすれば、できるでしょうか・・・

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

マクロで作れば できます。

yuko0909
質問者

補足

マクロですか。 マクロの記録ぐらいしかやったことがないのですが、どのようにやればいいんでしょうか・・・ よろしければおしえてください。

関連するQ&A

専門家に質問してみよう