

【VBA】2つのシートの値を比較して条件一致したら、同じ行の隣の値を別ブックへ転記したいです。
VBA初心者です。
現在契約書を作成しており、エクセルにまとめた顧客データを契約書フォーマットへ転記する作業をVBAで行いたいと思っているのですが、どうしてもデバッグを解消できない項目があり、質問させてください。
顧客データが2シートあり、それぞれ別の顧客データが並んでいます。軸とするデータ、sheet1のC列の値(No.)とsheet2のB列の値(No.)を比較し、sheet2のB列に同じ値があればその横のC列の値(商品名)をブック2(契約書)のD11に転記したいです。
また、sheet1のC列の値がsheet2のB列に存在しない時は、Book2のD11には"ー"が表示されるようにしたいです。
尚、契約書は顧客ごとに作成、PDFの作成まで自動化する予定で構築しており、No.を軸とした検索から商品名の転記までをループ化したいです。
どのようなVBAを記述すれば実現可能かご教示いただけますでしょうか。
宜しくお願い致します。

No.1ベストアンサー
- 回答日時:
こんにちは、
なんか、条件などおかしいのですけれど
まあ、構築中のサンプルとして、、、コードを書きましたので
参考になればと思います。
Book2の画像ではC列となっていますのでC列12行より
(複数商品がヒットした場合を想定)
下に商品名、D列12行目より下に№を出力します
出来るだけ纏めておきましたので、必要に応じて変更してください。
.Cells(12 + n, "C").Resize(, 2).Value = getRng.Resize(, 2).Value
みたいにも書けるかと思いますが、順番がsheet2の順番になるので
分けています。
抜出順位は顧客データsheet1の順位となります
取敢えず、Book2は開いている事
Sub test()
Dim 顧客データBK As Workbook, 契約書BK As Workbook
Dim cRng As Range, bRng As Range
Dim getRng As Range, r As Range
Dim n As Long
Set 顧客データBK = ThisWorkbook
Set 契約書BK = Workbooks("Book2.xlsx")
With 顧客データBK
Set cRng = .Worksheets("sheet1").Range("C2", .Worksheets("sheet1").Cells(Rows.Count, "C").End(xlUp))
Set bRng = .Worksheets("sheet2").Range("B2", .Worksheets("sheet2").Cells(Rows.Count, "B").End(xlUp))
End With
n = 0
For Each r In cRng
Set getRng = bRng.Find(What:=r.Text, LookIn:=xlValues, LookAt:=xlWhole)
If Not getRng Is Nothing Then
With 契約書BK.Worksheets("sheet1")
.Cells(12 + n, "C").Value = getRng.Offset(, 1).Value
.Cells(12 + n, "D").Value = getRng.Value
End With
n = n + 1
End If
Next
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
VBA 列全体を別シートの列と比較し、同じ値がある行の、右端に値をコピーする方法について
Excel(エクセル)
-
-
4
【VBA】元のシート内の文字列を別シートと比較し、一致したら元のシートの別のセルへ転記する方法。
Excel(エクセル)
-
5
VBA 別ブックから条件に合うものを転記したいです
Visual Basic(VBA)
-
6
エクセルのマクロで条件一致のデータを別シート(複数)に転記したい
Visual Basic(VBA)
-
7
Excelにて、シート間で、データーを比較して、一致したら別シートへ転記するコードを教えてください。
Microsoft ASP
-
8
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
9
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
10
【VBA】指定した検索条件に一致したら別シートに転記したい
Visual Basic(VBA)
-
11
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
12
別ブックをダイアログボックスで指定してそこにあるシートをコピーしたい
Excel(エクセル)
-
13
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
14
【excelVBA】Findメソッドで検索対象を複数列
Excel(エクセル)
-
15
[初心者です]VBAで指定列からAを検索し、発見したら隣のセルに値0を入れるマクロ。
Access(アクセス)
-
16
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
17
VBAでセル同士を比較して色付け
Visual Basic(VBA)
-
18
【ExcelVBA】5万行以上のデータ比較の効率的な処理方法について
Visual Basic(VBA)
-
19
Exel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について
Visual Basic(VBA)
-
20
VBA 条件が一致した場合のみコピーする
その他(ビジネス・キャリア)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで、あるセルの値に応じて...
-
IIF関数の使い方
-
vba 2つの条件が一致したら...
-
Worksheets メソッドは失敗しま...
-
C# dataGridViewの値だけクリア
-
Cellsのかっこの中はどっちが行...
-
B列の最終行までA列をオート...
-
【VBA】条件に一致するステータ...
-
VBAで、特定の文字より後を削除...
-
VBAコンボボックスで選択した値...
-
エクセル 2つの表の並べ替え
-
VBAで10行おきにセルの下に罫線...
-
vba 数値がゼロになるまで引く
-
データグリッドビューの一番最...
-
【Excel VBA】 B列に特定の文字...
-
VBA 何かしら文字が入っていたら
-
Excelマクロ 複数条件一致デー...
-
VBAの構文 3列置きにコピーし...
-
【Excel VBA】カンマと改行コー...
-
オートフィルタをマクロで作成...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Cellsのかっこの中はどっちが行...
-
Worksheets メソッドは失敗しま...
-
vba 2つの条件が一致したら...
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
IIF関数の使い方
-
VBAのFind関数で結合セルを検索...
-
Changeイベントでの複数セルの...
-
VBA 何かしら文字が入っていたら
-
【VBA】2つのシートの値を比較...
-
DataGridViewに空白がある場合...
-
VBAで、特定の文字より後を削除...
-
URLのリンク切れをマクロを使っ...
-
エクセル 2つの表の並べ替え
-
VBAコンボボックスで選択した値...
-
VBAを使って検索したセルをコピ...
-
VBAでのリスト不一致抽出について
-
複数csvを横に追加していくマク...
-
C# dataGridViewの値だけクリア
-
データグリッドビューの一番最...
おすすめ情報