プロが教える店舗&オフィスのセキュリティ対策術

マクロで抽出したデータ(複数のブック)を他のブックに貼りつけようとしてるのですが、抽出結果が何も無い場合に抽出元データのコピー範囲以外が貼りつけられます。

具体的には、
ブックが2つ(①、②)
抽出条件は日付が2018/11/14~2018/11/19のデータ
コピーはAの3行目からと指定してます。

(貼りつけ元データ①)
  A    B     C
1
2(№) (日付)  (氏名)
3 1  2018/11/14  佐藤 
4 2  2018/11/22  小川

(貼りつけ元データ②)
  A    B     C
1
2(№) (日付)  (氏名)
3 1  2018/10/15  田中 
4 2  2018/12/03  鈴木

(抽出結果)
  A    B     C
1
2(№) (日付)  (氏名)
3(№) (日付)  (氏名)
4 1  2018/11/14  佐藤

全てに抽出条件に該当するデータがある場合はキレイに貼りつけられます。

マクロ初心者です。
もしかしてコピーの設定の仕方が間違ってるのでしょうか。

ws2.Range("A3", ws2.Cells(Rows.Count, 1).End(xlUp)).Resize(, 8).Copy R

調べても分からなかったです。
どなたか知識のある方、教えて下さい。

よろしく お願いいたします。

A 回答 (2件)

No.2です。



>抽出結果に必ずしもA3があるとは限らないのでA3指定は難しいかもです。

SQLServerカテで質問しているのでてっきりSQL文で取り出したデータをシートに貼り付け、その後の話かと思いましたが・・・
もしかしてExcelのAutoFilterでの話でしょうか?

そうすると『可視セル』を選択してコピー元とする方法になりますよ。

オートフィルタを使い倒す
http://officetanaka.net/excel/vba/tips/tips155c. …
・タイトル行を除いてコピーする

タイトル行についてはVBAで2行目に直接書き込んでしまう(列数にもよりますが)方法と、
コピー先のA2が空白の時だけコピー元の2行目のみをコピペするIf文を作成するか等ですかね。
    • good
    • 0
この回答へのお礼

説明が不足してましたら申し訳ございません。
まさに、マクロの抽出です。

1行ずらしてコピーしてみようと思います。
でも そうすると見出しを後でつけなくては(笑)

参考になりました。
丁寧な説明どうも ありがとうございます。

お礼日時:2018/12/03 09:49

>抽出結果が何も無い場合に抽出元データのコピー範囲以外が貼りつけられます。



ようするに3行目にデータがないから2行目が最終行【ws2.Cells(Rows.Count, 1).End(xlUp)により】となって貼り付くのでしょ???

ならIf文で

If ws2.Range("A3") <> "" Then
ws2.Range("A3", ws2.Cells(Rows.Count, 1).End(xlUp)).Resize(, 8).Copy R
End If

と取り敢ずA3セルが空白でなければ実行するとか?
    • good
    • 0
この回答へのお礼

ありがとうございます。

コピーのマクロをA3からとしていたのですが、抽出結果全てが選択されているようです。

抽出結果に必ずしもA3があるとは限らないのでA3指定は難しいかもです。

勉強になりました。
次回の参考にさせて頂きます。

お礼日時:2018/12/03 09:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!