- ベストアンサー
エクセルマクロ:別のブックから該当するデータをコピー
Book1のSheet1、A列に日付、B列に対応するデータがあります。 Book2のSheet1A1セルに入力された日付と一致するBook1Sheet1B列の値を、Book2のB1セルに値貼り付けしたいのですが、どのように記述すればよろしいでしょうか。 宜しくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
以下のマクロをBook2/Sheet1のシート名タブ右クリック→「コードの表示」で開く画面に貼り付け、シートに戻りA1に日付を入力してみて下さい Private Sub Worksheet_Change(ByVal Target As Range) Dim ret If Target.Address = "$A$1" Then Set ret = Workbooks("Book1.xls").Sheets("Sheet1").Range("A:A") _ .Find(ActiveSheet.Range("A1").Value) If ret Is Nothing Then ActiveSheet.Range("B1").Value = "該当なし" Else ActiveSheet.Range("B1").Value = ret.Offset(0, 1).Value End If End If End Sub Hitする日付が複数あったら、最初の値をB1に格納しています。
その他の回答 (1)
- zap35
- ベストアンサー率44% (1383/3079)
回答No.2
#01です。 書き忘れてました。これだけならVLOOKUP関数で済んでしまう内容ですが、なぜVLOOKUP関数ではダメなのですか? BOOK1、BOOK2共に開いていればブックをまたがっても参照はできますよ
お礼
ありがとうございます、試してみます。 >これだけならVLOOKUP関数で済んでしまう内容ですが、なぜVLOOKUP関数ではダメなのですか? まさにご指摘の通り今はLookup関数で処理しているのですが、参照ファイルが非常に重く、かつ大量に処理する必要があるため、再計算を手動にしたままマクロで処理すればひょっとしてして作動時間が節約できるのでは、と思い質問いたしました。