• ベストアンサー

VBA ブック間でのVLOOKUPのような処理?

「北海道」「東京」「大阪」「福岡」のような地域ごとのブックがあり、 それぞれのブック内にある「集計」シートのA列に日付がはいっており、 B~E列には数字が入力されています。 開かれたそれらのブックから、 B~E列を指定した日付ごとに「全地域合計」ブックに転記していきたいのですが、 どのようにすればいいでしょうか。 各地域のブックからfindでVLOOKUPのように日付を検索して その列から転記になるのかなと思ったのですが、 そもそもこのような考え方であっているでしょうか…? すみません。よろしくお願いします。

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

  • ベストアンサー
  • eden3616
  • ベストアンサー率65% (267/405)
回答No.1

全てのブックを開いてから「全地域合計」ブックのB2セルに 以下の数式を貼り付けてB2:E5までオートフィル。 =VLOOKUP($A$1,INDIRECT("[" & $A2 & ".xlsx]集計!$A$1:$E$31"),COLUMN()-COLUMN($A2)+1,FALSE) ブックを閉じても値を保持するのであれば、 B2:E5をコピーしてB2:E5に値として貼付てください。 それかVBAでA列のブックを開きながら Worksheetfunction.VlookupかWorksheetfunction.Match等で 検索して値を取得するとかになります。

mmm-aio
質問者

お礼

VBAでの値の取得を考えていました。 そのような方法があるのですね。ありがとうございました!

関連するQ&A

  • VBAで別ブックからVLOOKUPで抽出

    ブックBシート1A列の値にマッチする値をそれぞれの列にVLOOKUPでブックAシート1にある値から貼り付けたいのですがVBAコードが解る方宜しくお願いします。尚、データーが50行ぐらいあるのですが。

  • VLOOKUPの検索値の集計について

    複数シートのデータをVLOOKUPを使って、sheet1(B2~B50)に検索表示させ、更にその値を縦集計し、sheet1(B1)に表示させたいのですが、検索値が文字列のため集計ができません。 VLOOKUPの式に、文字列を数値に変換するように組み込む方法があれば教えてください。 (元データの表示形式は「標準」になっております。) sheet1(B2~B50)には、現在このような式を入れています↓ =IF(COUNTIF(sheet2!$A$2:$E$50,sheet1A!$2),VLOOKUP(sheet1!$A2,sheet2!$A$2:$E$50,2,FALSE)*1,"")&IF(COUNTIF(sheet3!$A$2:$E$50,sheet1!$A2),VLOOKUP(sheet1!$A2,sheet3!$A$2:$E$10,2,FALSE)*1,"")

  • エクセル マクロで別ブックから転記するやり方

    エクセルでBook1(集計用)と、 店舗→Book2(大宮店)、Book3(東京店)・・・・・ 何店舗もあるんですがそれぞれの店舗のA30,B30,C30,D30の数字を Book1(集計用)のA列に並んだ店舗名のB列、C列、D列、E列に転記させたいと考えています。 今までは関数を入れて読み込ませていましたがこれをマクロで作成させる場合どのようにすればよいでしょうか? 何か他にいい案があれば教えていただきたいと思います。 よろしくお願いいたします。

  • VLOOKUPの選択範囲について

    エクセル関数VLOOKUPの選択範囲についての質問です。 同一フォルダ内 1、商品名のブック   Sheet1…A業者の商品情報(範囲A1:E50)   Sheet2…B業者の商品情報(範囲A1:E60) 2、集計表のブック 上記の前提で、2の集計表のブックに 1の商品名のブックの中身、Sheet1とSheet2を共に範囲指定し VLOOKUPを使用する方法を探しています。 もしご存知の方がいらっしゃいましたら、教えてくださると嬉しいです。

  • [EXCEL2007]VBAからの別ブック参照VLOOKUPについて

    初めまして。 EXCEL2007で、VBAからFORMULA式を使って別ブックを参照するVLOOKUPを埋め込もうとしています。 このとき、対象となる別ブックのシートに、検索値に合致する情報がないと、「シートの選択」ダイアログが出てしまうのですが、これを出さずに、式を生かしたまま「#N/A」扱いにする(=ワークシート上でVLOOKUPに失敗したときと同じ結果とする)方法はないでしょうか? いろいろ試したのですが解決策が見つかりませんでした。 実装コードはつぎのような形になってます。 Sheet1.Formula = "=VLOOKUP(B2,'[Book2.xls]Sheet1!$B1:$C255,2,FALSE)" Book2のSheet1のB1:C255に、検索キー[B2]の値があるとき、C列の値を取ろうとしています。 このとき、検索に失敗すると、コード実行中に「シートの選択」ダイアログが出てしまうので、これを回避したいのが質問の主題です。 Application.DisplayAlerts = FALSE でもダメでした。 なにか良いアイデアがありましたらご教唆願います。

  • vlookupに、Indirect と Match 関数を組み合わせる

    vlookup関数で、検索値にSheet1(Book1)から、範囲は、Sheet2(Book1)のセルにある名前のついているSheet1(Book2), そして、列番号は、指定した名前とマッチするSheet1(Book2)の列番号から、導き出そうとしています。 ところが、Matchで指定した範囲は、Indirect内の関数として認識されないようで、結果が得られません。 たとえば、 Book1のA1~E1にタイトルが入っています。(Index, Title, Book, Author, Frequency) Book2には、 シート1: InputName シート2: Output シート2に以下の関数を入れてみましたが、うまくいきません。 ちなみに、VLOOKUPの列番号を Match関数の代わりに、5 とすると、結果オーライですが、Book1 の列順が変わっていることがあるので、Matchを使ってエラーを避けたいのですが、以下の関数のどこを直すべきでしょうか? =IF(ISNA(VLOOKUP(C2,INDIRECT("'["&InputName!$A$2&"]"& InputName!$B$2&"'!"&"$A$2:$E$1400"),MATCH("Frequency",$A$2:$E$2,0),FALSE)),0,VLOOKUP(C2,INDIRECT("'["&InputName!$A$2&"]"& InputName!$B$2&"'!"&"$A$2:$E$1400"),MATCH("Frequency",$A$2:$E$2,0),FALSE)) よろしくお願いします。

  • VLOOKUP関数をVBAで書くには

    EXCEL VBAの初心者です VLOOKUP関数をVBAで書きたいのですが、よくわかりません すいませんがどなたかご教授、願えないでしょうか? sheet1     sheet2 A    B  A    B      名称 CD    名称 CD 滋賀県 25     滋賀県  25 京都府 26     大阪府 27 大阪府 27 兵庫県 28     兵庫県 28 sheet2のA列をキーにsheet1のA列と照合して sheet2のB列にsheet1で一致した行のB列をコピーする VLOOKUP関数を使うと、sheet2のB2は =IF($A2="","",VLOOKUP($A2,Sheet1!$A$2:$B$5,2,0)) としたら、25を得ることができました VBAでする場合、どのように書けばいいのでしょうか? よろしくお願いします

  • エクセル セルの関数中の一部を置き換えたい

    エクセルの操作に詳しい方にお尋ねいたします。 1つのブックの中に、例えば「集計」「東京」というシートがあるという例でお話させていただきます。 今、「集計」シートのセル番地:E100に  =VLOOKUP(B100,東京,15,FALSE) という関数が入っていて、他のE列にも「B100」以外は全く同じ関数が入っているのですが、 「東京」シートの途中に列を挿入したため、出る値が変わってしまいました。 15列目にあったものが16列目になったのだと思い、E100を  =VLOOKUP(B100,東京,16,FALSE) と、VLOOKUP関数の列番号「15」を「16」に変えてみたところ、正しい値が表示されました。 ただ、これが3000行以上あるため、手で入力し直すのは相当大変だと思います。 E列を選択して、単に「検索する文字列」に「15」を、「置換後の文字列」に「16」を入れて「すべて置換」をクリックしていいのでしょうか? 検索値(ここではB100)の中に「15」という数字が含まれているものまで変わってしまったらと思うと、 不得手な私には自信がありません。 色々調べてここまでは分かったのですが、詳しい方、どうかアドバイスをお願いします。

  • VBAで条件が2つある場合の転記について

    現在Book1.xlsmでユーザーフォームを作成しています。 ここにComboBox7(日付)、ComboBox8(項目)、TextBox11(数値)を配置しています。コンボボックス やテキストボックスに入力があるとBook1.xlsmのSheet1にそれぞれComboBox7はA2、ComboBox8はB1、TextBox11はB2に入力されるようになっています。 ここで、B2の数値を別なブックBook2.xlsxのSheet2に転記したいと考えております。 Book2.xlsxのSheet2では、A列に日付、B1~AZ1に項目が入っています。 Book1.xlsmのSheet1のA2と同じ日付、B1と同じ項目が交差するところにB2の数値を転記したい場合はどのようにしたら良いのか教えていただけませんでしょうか?

  • エクセル vlookup

    エクセル vlookup 日付検索について。 あ 7/9  500 い 8/9  300   というシート1があり シート2で 月別の集計をしたいです。 ↓ 7月 あ  500 8月 い  300 この時の7月集計の数式は  =VLOOKUP("*/7/*",'シート2'!A1:D30,1,FALSE) 書式を日付にしても#N/Aがでてしまいます。

専門家に質問してみよう