- ベストアンサー
EXCELのVLOOKUPでできますか?
VLOOKUPでできるかどうかわからないのですが、質問します。 BOOK(A)とBOOK(B)がありまして、BOOK(A)がA1かつA2で、BOOK(B)もA1かつA2の時、BOOK(B)のA3のデータをBOOK(A)のA3に返したいとき、どのような計算式を立てればよいのかわかりません。 どうか教えてください。 EXCEL97です。 ACCESSじゃないとだめでしょうか・・・ よろしくお願いします。(__)
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
#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)という具合に うまく説明できなくて すいません。
その他の回答 (5)
- imogasi
- ベストアンサー率27% (4737/17069)
#5の22行目の「最右列」と書いたのは、「最左列」の誤りです。済みません、訂正します。
お礼
ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
ご質問を始めて読んだ時、問題の意味が理解できませんでした。#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にすること、が注意。 以上を参考・注意事項としてやって見てください。
お礼
回答ありがとうございました。 教えていただいたやりかたでやってみます。 感謝します。
- terakura
- ベストアンサー率20% (4/20)
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
お礼
できるかどうかわかりませんがやってみます。 ありがとうございました。
- free-goo
- ベストアンサー率18% (28/155)
データ数は どれくらい ありますか?? 検索して、その中から あれば 引用するのでしょうか そのキーになる部分が、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でも 同じですが 質問に対して、違っていたら ごめんなさい できたら 具体的に 教えて下さい(内容を・・)
補足
補足します。 えっとですね、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)
マクロで作れば できます。
補足
マクロですか。 マクロの記録ぐらいしかやったことがないのですが、どのようにやればいいんでしょうか・・・ よろしければおしえてください。
お礼
丁寧に教えていただきありがとうございます。 よく読んで、チャレンジしてみます。 がんばります。