Sheet1.xlsm A列のコードを参考にリスト.xlsxからVlookupで値を検索して
Sheet1のG列、H列、I列、K列、L列、M列に値を貼り付けたいです。(J列には別のデータが入りますので空白です)
マクロは全くの初心者なのですが、仕事で指示を受け困っています。
参考書片手に試行錯誤してG4への貼り付けができるように下記のようにつくってみましたが、うまく動きません。
初歩的な内容で大変申し訳ないのですが、ご教示いただけますでしょうか?
<補足>
・Sheet1へは100件程度貼り付けたいコードが入っています。
・リスト内データは1000件あります。
Option Explicit
Sub データ転記()
Application.ScreenUpdating = False
Dim I As Long
Dim xlBook
Set xlBook = Workbooks.Open("C:\Users\wwsd111\Documents\リスト.xlsx")
I = 2
Do While Range("A" & I).Value <> ""
ThisWorkbook.Worksheets("Sheet1").Range("G" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("C:\Users\wwsd111\Documents\リスト.xlsx").Range("B" & I).Value, xlBook.Worksheets("C:\Users\wwsd111\Documents\リスト.xlsx").Range("A7:G1000"), 2, 0)
I = I + 1
Loop
xlBook.Close
Application.ScreenUpdating = True
MsgBox ("完了")
End Sub
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
No.1です。
>Sheet1の4行目以降にリストから抽出したデータを入力することができるか・・・
前回のコードは2行目からのループにしていました。
始まりは4行目からなのですね。
おそらく空白セルを参照してしまい、最初の空白行が表示されたのではないかと思います。
そして、もう一度コードを拝見するとG列に表示するのはVLOOKUP関数の
検索値 → 「Sheet1」のB列
範囲 → 開いたブックのA~G列の2列目すなわちB列(完全一致)
となっていますね。
画像が小さすぎて詳細が判らないのですが、
「Sheet1」のB列には何も入っていないように見えます。
そのため前回のコードはA列を検索値としていました。
もう一つ質問文に
>Sheet1のG列、H列、I列、K列、L列、M列に値を貼り付けたいです
とありますが、
開いたブック(Sheet)のどの列を当てはめれば良いのでしょうか?
その辺が判りませんので、とりあえずG列以降に表示するのは開いたSheetのB列~G列の順にしています。
↓のコードに変更してみてください。
Sub Sample2()
Dim i As Long, c As Range, wB As Workbook, wS As Worksheet
Dim myPath As String, fN As String
myPath = "C:\Users\wwsd111\Documents" & "\"
fN = "リスト.xlsx"
Application.ScreenUpdating = False
Workbooks.Open myPath & fN
Set wB = ActiveWorkbook
Set wS = wB.Worksheets(1)
With ThisWorkbook.Worksheets("Sheet1")
For i = 4 To .Cells(Rows.Count, "B").End(xlUp).Row '//4行目~B列最終行まで★//
If .Cells(i, "B") <> "" Then '//←追加//
Set c = wS.Range("B:B").Find(what:=.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole) '//★//
If Not c Is Nothing Then
.Cells(i, "G") = wS.Cells(c.Row, "B") '//★//
.Cells(i, "H") = wS.Cells(c.Row, "C") '//?//
.Cells(i, "I") = wS.Cells(c.Row, "D") '//?//
.Cells(i, "K") = wS.Cells(c.Row, "E") '//?//
.Cells(i, "L") = wS.Cells(c.Row, "F") '//?//
.Cells(i, "M") = wS.Cells(c.Row, "G") '//?//
End If
End If
Next i
End With
Application.DisplayAlerts = False
wB.Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "完了"
End Sub
※ コード内の「?」の行は元データのどの列を代入していいのかわからないので
勝手に列番号を決めています。m(_ _)m
No.1
- 回答日時:
こんにちは!
開いたブックのSheetのG・H・I・K・L・M列のデータを一致する行の同じ列に表示すれば良いのですね?
一例です。
Sub Sample1()
Dim i As Long, c As Range, wB As Workbook, wS As Worksheet
Dim myPath As String, fN As String
myPath = "C:\Users\wwsd111\Documents" & "\"
fN = "リスト.xlsx"
Application.ScreenUpdating = False
Workbooks.Open myPath & fN
Set wB = ActiveWorkbook
Set wS = wB.Worksheets(1)
With ThisWorkbook.Worksheets("Sheet1")
For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
Set c = wS.Range("A:A").Find(what:=.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
.Cells(i, "G") = wS.Cells(c.Row, "G")
.Cells(i, "I") = wS.Cells(c.Row, "I")
.Cells(i, "K") = wS.Cells(c.Row, "K")
.Cells(i, "L") = wS.Cells(c.Row, "L")
.Cells(i, "M") = wS.Cells(c.Row, "M")
End If
Next i
End With
Application.DisplayAlerts = False
wB.Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "完了"
End Sub
こんな感じで良いのでしょうか?m(_ _)m
ありがとうございます!
初歩的な内容に親切にご回答いただけてとても嬉しいです。
早速ためしてみたのですが、実行したところ、予想と違う結果になりました。
・Shee1のF2~M2までのデータが消えた
・G2に「登録日」というもともとM2に入力されていた単語が入った
・G列G4~G9までに11~16までの数字が入った
たびたび申し訳ないのですが、コードのどちらを修正しましたら、
Sheet1の4行目以降にリストから抽出したデータを入力することができるか
再度ご教示いただけますでしょうか?
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
このQ&Aを見た人はこんなQ&Aも見ています
-
「どうして捨てられないの?」前妻の物を捨てられない男性の心理って?
前妻の物を捨てられない理由に加え、捨てるための手段はあるのかを専門家に聞いてみた!
-
Exel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について
Visual Basic(VBA)
-
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
別のシートから値を取得するとき
Visual Basic(VBA)
-
-
4
vlookup関数の引数を変数で指定することはできますか?
Excel(エクセル)
-
5
VBAでvlookup関数から、別シート参照するやり方・・・
Visual Basic(VBA)
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
VBAで「セルに何か入っている場合」
Windows Me・NT・2000
-
8
Excelで2つのデータの突合せをしたいです
Excel(エクセル)
-
9
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
10
【VBA】2つのシートの値を比較して条件一致したら、同じ行の隣の値を別ブックへ転記したいです。 VB
Visual Basic(VBA)
-
11
【VBA】指定した検索条件に一致したら別シートに転記したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel2010 VBAでスペース区切り
-
マクロ 最終列をコピーして最終...
-
文字列の結合を空白行まで実行
-
ExcelVBA修正のお願い
-
エクセルVBA シートモジュール...
-
VBAで別のブックの値をVlookup...
-
vba 等間隔の列に対しての計算
-
エラーコード1004
-
VBA 何かしら文字が入っていたら
-
エクセル 2つの表の並べ替え
-
Excel VBA 足し算の問題を自動...
-
VBAのFind関数で結合セルを検索...
-
rowsとcolsの意味
-
B列の最終行までA列をオート...
-
Excelで、あるセルの値に応じて...
-
VBA 値と一致した行の一部の列...
-
複数csvを横に追加していくマク...
-
IIF関数の使い方
-
Worksheets メソッドは失敗しま...
-
excel 別ブックのデータをvbaで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
vba 2つの条件が一致したら...
-
Cellsのかっこの中はどっちが行...
-
マクロ 最終列をコピーして最終...
-
VBAを使って検索したセルをコピ...
-
データグリッドビューの一番最...
-
URLのリンク切れをマクロを使っ...
-
VBAのFind関数で結合セルを検索...
-
【VBA】2つのシートの値を比較...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
Excel(M365) Vlookup/セル反転(...
-
VBA指定行削除
-
VBAでのリスト不一致抽出について
-
C# dataGridViewの値だけクリア
-
Changeイベントでの複数セルの...
-
VBAで、特定の文字より後を削除...
-
rowsとcolsの意味
おすすめ情報