前提・実現したいこと
オートフィルで表示されている部分にだけ、別シートの値を貼り付けたい。
1)Sheet1シートのA1セルから下方向へ、値が入っている範囲をコピーする
2)Sheet2シートのオートフィルターが掛かったセル範囲のうち、
見えているセル範囲の1列目から、下方向へ順に貼り付ける
※両シートともに、タイトル行はございません
※A列の項目数は状況により異なります
【前提】
■Sheet1
A | B | C |
---|---|---|
1月1日 | ||
1月2日 | ||
1月3日 |
■Sheet2
A | B | C |
---|---|---|
あああ | ||
いいい | ||
ううう | ||
あああ | ||
いいい | ||
ううう | ||
あああ | ||
いいい | ||
ううう |
■Sheet2(オートフィル済)
A | B | C |
---|---|---|
あああ | ||
あああ | ||
あああ |
【実現したいこと】
■Sheet2(データ貼り付け後にオートフィル解除後)
A | B | C |
---|---|---|
1月1日 | あああ | |
いいい | ||
ううう | ||
1月2日 | あああ | |
いいい | ||
ううう | ||
1月3日 | あああ | |
いいい | ||
ううう |
該当のソースコード
VBA
1Sub 2 Dim rng1 As Range 3 Dim rng2 As Range 4 Dim InputRng As Range 5 Dim OutRng As Range 6 xTitleId = "KutoolsforExcel" 7 Set InputRng = Application.Selection 8 Set InputRng = Application.InputBox("Copy Range :", xTitleId, InputRng.Address, Type:=8) 9 Set OutRng = Application.InputBox("Paste Range:", xTitleId, Type:=8) 10 For Each rng1 In InputRng 11 rng1.Copy 12 For Each rng2 In OutRng 13 If rng2.EntireRow.RowHeight > 0 Then 14 rng2.PasteSpecial 15 Set OutRng = rng2.Offset(1).Resize(OutRng.Rows.Count) 16 Exit For 17 End If 18 Next 19 Next 20 Application.CutCopyMode = False 21 22End Sub
補足情報
https://www.extendoffice.com/ja/documents/excel/2617-excel-paste-to-visible-filtered-cells.html
上記サイトのソースを利用しておりますが、
実行のたびに範囲を選択するのではなく、
値の入っている部分だけをコピーして、sheet2に貼り付けたいです。
当方初心者のため、初歩的なご質問となってしまいますが、
どうぞよろしくお願いいたします。
(例)
Sheet2のA列に、Sheet1のA列の内容を貼り付ける
※A列の項目数は状況により異なる
Sheet1のA列のデータ数とSheet2の入力したいセルの数は必ず同じなのですか?
違う場合はどう取り扱うのでしょう?
また、提示の表にはタイトル行がないように見えますが、
どのようなセル範囲をコピーして、
どのようなセル範囲に値のみ貼り付けたいのですか?
例)
1)Sheet1シートのA1セルを含む表範囲の1列目のタイトル行を除くデータを、コピーする
2)Sheet2シートのオートフィルターが掛かったセル範囲のタイトル行を除く見えてるセル範囲の2列目へ上から順に貼り付ける
といったように誰に頼んでも間違いがない手順をまずは考えて、説明してみてください。
ご指摘ありがとうございます。
Sheet1のA列のデータ数とSheet2の入力したいセルの数は必ず同じなのですか?
→必ず同じとなります。
どのようなセル範囲をコピーして、
どのようなセル範囲に値のみ貼り付けたいのですか?
→1)Sheet1シートのA1セルから下方向へ、値が入っている範囲をコピーする(タイトル行はない)
2)Sheet2シートのオートフィルターが掛かったセル範囲のうち、
見えているセル範囲の1列目から、下方向へ順に貼り付ける
上記、確かに情報が不足しておりました。
質問内容も修正させていただいたので、ご教示いただけますと幸いです。
