Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(指定なし : 指定なし)
離れた(非連続)場所のセルのコピー
投稿日時: 24/04/13 01:21:06
投稿者: たっくんプードル

離れた場所のセルを選択するには、Ctrlキーを押しながら選択すれば可能です。
しかし、この非連続のセル範囲をコピーして、同じ構造の別シートの同じ場所にコピーをしたいのですが、コピーをしようとする時点で「この操作は複数の選択範囲に対しては機能しません」と言われます。
非連続のセル範囲の場合は、やはり1か所ずつコピーアンドペーストするしかないのでしょうか。
 
また、同操作をVBAでやりたい場合も結局できないのでしょうか。ご教示ください。

回答
投稿日時: 24/04/13 07:23:02
投稿者: simple

> 1か所ずつコピーアンドペーストする
そうです。Area単位でコピーペイストすればいいですよ。
貼り付け先ワークシートを定義しておいて

    For Each ar In Selection.Areas
        ar.Copy ws.Range(ar.Address)
    Next
などとすればよいでしょう。

回答
投稿日時: 24/04/13 22:57:58
投稿者: WinArrow

同一行の離れた単独セルで、試してみてください。
これなら複写できますが、
>同じ構造の別シートの同じ場所
にはなりませんよ
 
同じ構造の別シートの同じ場所という条件ならば、
データの入っているセル範囲(途中の空白セルを含む)全部を選択することです。

回答
投稿日時: 24/04/14 09:35:30
投稿者: Mike

たっくんプードル さんの引用:
離れた場所のセルを選択するには、…
…非連続のセル範囲をコピーして、同じ構造の別シートの同じ場所にコピーをしたいのですが、…
非連続のセル範囲の場合は、やはり1か所ずつコピーアンドペーストするしかないのでしょうか。
連続してない飛び飛びのセル(範囲)のコピー&ペーストというヒントから思い出した機能があるので、参考までにご紹介しておきます。
  A B C  D  E F G
1  1       10 20 30
2   2     20 30 40
3     3    30 40 50
4   4     40 50 60
5  5       50 60 70
6   6     60 70 80
7     7    70 80 90
8
9     1 20 30
10    20  2 40
11    30 40  3
12    40  4 60
13     5 60 70
14    60  6 80
15    70 80  7
範囲 A1:C7 をコピーし⇒同じ構造(3列7行)の範囲 E1:G7 の左上隅のセル E1 を選択⇒マウスの右クリック⇒[形式を選択して貼り付け]⇒画面下端にある“空白セルを無視する”にチェック入れ⇒「OK」をパシーッ
その結果を範囲 D10:F16 に示しています。
どうです?飛び飛びのデータセルだけがコピーされているでしょッ!
 
参考までに“空白セルを無視する”機能を紹介しましたが、箸にも棒にも掛からなかった?
こりゃまた失礼しました。m(_._)m

投稿日時: 24/04/16 00:04:50
投稿者: たっくんプードル

simple さんの引用:
> 1か所ずつコピーアンドペーストする
そうです。Area単位でコピーペイストすればいいですよ。
貼り付け先ワークシートを定義しておいて
    For Each ar In Selection.Areas
        ar.Copy ws.Range(ar.Address)
    Next
などとすればよいでしょう。

 
Worksheets("20240410") から、同じ構造の別シート Worksheets("20240410 (2)") へ貼り付けるため、以下のコードを作成し、実行しましたらうまくいきました!
選択しているコピー元シートの非連続セル範囲は、P4:P218、S217:S218 という前提です。
 
Sub harituke()
 
Dim ar As Range
Dim ws As Worksheet
 
Set ws = Worksheets("20240410 (2)")
 
For Each ar In Selection.Areas
        ar.Copy ws.Range(ar.Address)
    Next
     
End Sub

トピックに返信