• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:統合セルの混じった複数セルのコピー&ペーストがわかりません。)

統合セルの複数セルコピー&ペースト方法

このQ&Aのポイント
  • 統合セルが混じった複数のセルをコピーしてペーストする方法について教えてください。
  • シート1にある統合セルと非統合セルの情報をコピーして、別のシートにペーストする方法を知りたいです。
  • 統合セルを含む複数のセル情報をコピーして、同じ形式で別のシートに貼り付ける方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

> A1:E19を1単位として、右隣に同じ形式(2単位目はF1:J19)の情報が > 100個ほど並んでいます。 100 個というのが意味不明です。 A ~ E 列なら 1 単位辺り 5 列なので、100 単位となると 5 × 100 で 500 列必要になりますね。。Excel2007? 若しくは、5 列 × 20 単位 = 100 列 という意味ですか? >「$A$1:$E$8,$B$9:$B$19」と入力したら、その情報をコピーして、 > 別シート2のA列1列にそれらの情報をペーストしたいのです。 仮に、「$A$1:$E$8,$B$9:$F$19」が選択された場合はどうします? ポイントになりそうなのは、   1. MergeArea   2. Offset ですかね。。働きはヘルプで調べてみて下さい。 結合セルの値は、結合セルの一番左角のセルから取得します。例えば A1:C10 が結合されているなら A1、F10:J20 なら F10 のように。 ご希望の動作を正しく理解している自信がありませんが、とりあえず テストコードということで回答してみます。 Sub macro()      Dim Sh  As Worksheet   Dim rSrc As Range   Dim r   As Range   Dim i   As Long   Dim lRow As Long   Dim lCol As Long   Set rSrc = Application.InputBox( _         Prompt:="範囲をドラッグしてください。", _         Type:=8)   If rSrc Is Nothing Then Exit Sub      Set Sh = Worksheets.Add(After:=ActiveSheet)   lRow = 1   lCol = 1   For i = 1 To 20     For Each r In rSrc       ' // MergeArea で取得されるセルの一番左角のセルであった時       ' // のみ転記処理を行う。結合セルであるかどうかは問題ではない       If r.Address = r.MergeArea(1).Address Then         Sh.Cells(lRow, lCol).Value = r.Value         lRow = lRow + 1       End If     Next     ' // 1単位は 5 列で構成されるので、次の単位における     ' // 同位置は Offset(0,5)     Set rSrc = rSrc.Offset(0, 5)     lRow = 1     lCol = lCol + 1   Next   Set rSrc = Nothing End Sub

shishsi
質問者

お礼

つたない質問から、良い回答を書いていてありがとうございます。 If r.Address = r.MergeArea(1).Address Then の部分、特に参考になりました。ありがとうございました。

関連するQ&A