質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

1回答

529閲覧

VBA:一致した場合、一部のみ別シートへコピーし貼り付け

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2021/10/11 04:41

編集2021/10/11 23:13

前提・実現したいこと

sheet1のA列とsheet2のB列が一致する場合、sheet2の J1~AA1000 の該当行をsheet1の AN列 以降にコピーし貼り付ける
※sheet2の J1~AA1000 は最終行がデータによって異なりますが一旦、固定にしています。

Subコピーする場所にて、コピーし貼り付け自体は対応できたのですが
sheet1のA列とsheet2のB列が一致する場合が自身で対応できず困っております。

該当のソースコード

VBA

1Sub sheet2からsheet1へコピー(ByVal clear_flag As Boolean) 2 Dim x As Long 3 Dim i As Long 4 5 With Sheets("sheet2") 6 x = .UsedRange.Cells(.UsedRange.Count).Row 7 If clear_flag = True Then 8 .Range("B2:B" & x).Interior.Pattern = xlNone 9 End If 10 For i = x To 2 Step -1 11 If Sheets("sheet1").Range("A:A").Find(What:=.Cells(i, 2), LookAt:=xlWhole) Then 12 Call コピーする場所 13 End If 14 Next i 15 End With 16End Sub

VBA

1Sub コピーする場所() 2 3 Dim sh_org As Worksheet 4 Dim sh_dst As Worksheet 5 Set sh_org = Sheets("sheet2") 6 Set sh_dst = Sheets("sheet1") 7 8 sh_org.Range(sh_org.Cells(1, "J"), sh_org.Cells(1000, "AA")).Copy _ 9 Destination:=sh_dst.Range("AN1") 10End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こういうことですか?

VBA

1Dim foundCell As Range 2Set foundCell = Sheets("sheet1").Range("A:A").Find(What:=.Cells(i, 2), LookAt:=xlWhole) 3If Not foundCell Is Nothing Then 4 .Range(.Range("J" & i), .Range("AA" & i)).Copy foundCell.Offset(, 39) 5End If 6

投稿2021/10/11 23:59

編集2021/10/12 00:00
jinoji

総合スコア4592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/10/12 00:44

ご回答ありがとうございます。 意図が汲み取れず大変申し訳ないのですが、ご回答いただいたコードのみでは対応できないかと思います。 どの部分に組み込む想定でご回答いただいたかご教示いただけますと幸いです。
jinoji

2021/10/12 01:12

sheet1のA列とsheet2のB列が一致する場合、とおっしゃる意味が、 「sheet1のA列とsheet2のB列、それぞれの全てのセル同志で完全一致する場合」という話なのか、 それとも、「sheet2のB列の任意のセルの値が、sheet1のA列のどこかに存在した場合、(そのsheet1の該当行にsheet2の値をコピーする)」ということなのかがつかめなかったので、仮に後者だと想定して書いたものです。
退会済みユーザー

退会済みユーザー

2021/10/12 04:41

ご確認ありがとうございます。 後者で齟齬ございません。 前回のコメントと重複し申し訳ないですが、いただいたコードだけだと対応できないと思いますので Sub sheet2からsheet1へコピー を使用する前提で伺います。 For i = x To 2 Step -1   ここに組み込む理解で合っているでしょうか? Next i
jinoji

2021/10/12 07:10

その想定で書きました。
退会済みユーザー

退会済みユーザー

2021/10/12 08:29

こちらで対応できました。 詳細かつ細やかにご連絡いただきまして本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問