検索シートに入力した値をdataシートから検索し、該当する行の1列から27列までを入力シートの入力されている値の続きから貼り付けしたいのですが。

画像
補足

補足なんですが、よろしければ値を取得する箇所と貼り付ける箇所を 変更するかもしれないので、取得行の1列目から20列目、22列目から27列目を取得するいった感じで21列目だけはずす式も教えていただきたいのですが、 お願いいたします。

Visual Basic | Excel150閲覧

ベストアンサー

0

複数のブックを扱う場合は、マクロはどこに入れるのか、それぞれのブックはどのフォルダに入っているのかを書いて下さい。 それによってコードが変わります。

ThanksImg質問者からのお礼コメント

返信が遅くなってすみません。 この通りでまったく問題ないです。 もう少し勉強してちゃんと理解できるよう頑張ります。 ありがとうございました。

お礼日時:6/30 16:47

その他の回答(1件)

0

★.Resize(★を含めて◯行、★を含めて◯列)拡大する ☆.Offset(☆を含めず◯行、☆を含めず◯列)ずらす Union(◯、□) 二つの範囲を結合する たとえば不要な21列目は詰めていいなら、 Sub Sample() Dim i As Long: i = 3 Dim buf As Range Set buf = Union(Cells(i, "A").Resize(, 20), Cells(i, "A").Offset(, 21).Resize(, 6)) buf.Copy Range("A10").PasteSpecial xlPasteValues End Sub な感じになります。 下記のように書いてもいいです。 Set buf = Union(Range(Cells(i, 1), Cells(i, 20)), Range(Cells(i, 22), Cells(i, 27)))

画像

ありがとうございます。 この.Resizeと.Offsetがあるのはわかっているのですが、いまいち理解ができていなくて。 要はSet buf = Union(Cells(i, "A").Resize(, 20), Cells(i, "A").Offset(, 21).Resize(, 6)) Cells(i, "A").Resize(, 20)が1行目から20行目を取得で Cells(i, "A").Offset(, 21).Resize(, 6)が22行目から6行目までを取得するってことでいいんでしょうか? そう考えるとCells(i, "A")がなぜ1行目なのか? Offset(, 21)がなぜ22行目なのかが… むずかしいです。