• ベストアンサー

サイズの異なる結合セル間でのコピー&ペースト

いつもお世話になっております。 Excel 2007 Windows XP Proffessional サイズの異なる結合セル間において、 一括して多数のコピー&ペーストをしたい場合、 何か良い方法はありますでしょうか。 (ただし、それぞれの結合セルのサイズ等は一切変更できません) どうぞアドバイスのほどよろしくお願いします。

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

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.10

下記で合っているでしょうか? 違っていたらその旨教えてください。 「コピー元左上セル」と「貼付け開始左上セル」のシート名、セル番地は実際に合わせてください。 Sub test横横複数行()   Dim acell As Range   Dim bcell As Range   Dim i As Long   Dim cn As Long   Set acell = Sheets("Sheet1").Range("A1") 'コピー元左上セル   Set bcell = Sheets("Sheet1").Range("A5") '貼付け開始左上セル   Do While acell.Offset(0, i).MergeCells     cn = cn + acell.Offset(0, i).Columns.Count     i = i + 1   Loop      Do While bcell.MergeCells     bcell.Resize(1, cn + 1).Value = acell.Resize(1, cn + 1).Value     Set bcell = bcell.Offset(1, 0)   Loop   Set acell = Nothing   Set bcell = Nothing End Sub

nao-k
質問者

お礼

朝早くにご回答ありがとうございます。 試させていただきました。 結果、うまく実行できることを確認しました。 (途中に結合されていないセルがあるとその手前で止まる仕様なのですね。) 非常に助かりました。 ありがとうございます。

その他の回答 (9)

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.9

>コピー元 A B C D >コピー先 A B C D >コピー先 A B C D >コピー先 A B C D >コピー先 A B C D 上記のようになって欲しいのですか? コピー元は1行 コピー先では、 同じ方向で 4行貼りつける コピー先の行数は、コピー元のデータ数と同じ ということですか? 今一度、コピー元とコピー先のレイアウト、結合セルサイズを説明していただけないでしょうか。

nao-k
質問者

お礼

やりたいことをうまく説明できておらず、申し訳ありません。 >上記のようになって欲しいのですか? はい。 >コピー先では、 >同じ方向で >4行貼りつける 例では4行としていますが、100行以上あります。 >コピー先の行数は、コピー元のデータ数と同じ >ということですか? すみません。 こちらの意味はわかりませんでした。 次のようにしたいのです。 0 コピー元の値: A B C D 1 コピー先の値: A B C D 2 コピー先の値: A B C D 3 コピー先の値: A B C D ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 100 コピー先の値: A B C D ※A、B、C、Dが格納されているコピー元のセルは、 A=3行2列、B=3行3列、C=3行3列、D=3行3列の結合セル。 ※A、B、C、Dが格納されるコピー先のセルは、 いろいろなパターンの結合セルです。 (項番0、1、2、3それぞれで異なる行数の結合セルという意味)

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.8

ANo.4の返事 >結合セルが横に複数ある場合、それを縦方向にコピーするには ANo.7の返事 >コピー元 A B C D >コピー先 A B C D 内容が異なっているのですが、新しい返事の方が正解なら余り考えなくても良くなります。 下記の部分で縦か横かを制御しています。 直し方は、ヘルプでOffsetプロパティを調べれば直ぐに分かると思います。 Set acell = acell.Offset(1, 0) Set bcell = bcell.Offset(1, 0)

nao-k
質問者

お礼

アドバイスありがとうございます。 内容が異なっている認識はないのですが・・・ もし表現(Excelの言葉の定義を誤っている?)が異なっているので したらすみません。 >新しい返事の方が正解なら なおりました。 ただ、次のようにしかコピーできないようです。 コピー元 A B C D コピー先 A コピー先 A コピー先 A コピー先 A 教えてくださったコードを元に、 コピー元 A B C D コピー先 A B コピー先 A B コピー先 A B コピー先 A B コピー元 A B C D コピー先 A B C コピー先 A B C コピー先 A B C コピー先 A B C コピー元 A B C D コピー先 A B C D コピー先 A B C D コピー先 A B C D コピー先 A B C D となるようにコードを検討すれば良いのかな?と 思って試行錯誤していますが、うまくいかないようです。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.7

取りあえずANo.5のコードを誤魔化してみました。 完璧とは言えません。 更に考えてみます。 Sub test縦横()   Dim acell As Range   Dim bcell As Range   Set acell = Sheets("Sheet1").Range("D1")   Set bcell = Sheets("Sheet2").Range("B1")   Do While acell.Value <> "" Or bcell.Value <> ""     If acell.Value <> "" And bcell.Value = "" Then       bcell.Value = acell.Value     ElseIf acell.Value = "" And bcell.Value <> "" Then       acell.Value = bcell.Value     Else       Exit Sub     End If     If acell.Offset(1, 0).MergeCells Then       Set acell = acell.Offset(1, 0)       Set bcell = bcell.Offset(0, 1)     Else       Set acell = acell.Offset(0, 1)       Set bcell = bcell.Offset(1, 0)     End If   Loop   Set acell = Nothing   Set bcell = Nothing End Sub # 余談を聞き入れていただきありがとうございました。 # 気分を害していることはありませんので気にしないでください。 # よろしくお願いいたします。

nao-k
質問者

お礼

引き続きのご対応ありがとうございます。 ご親切にありがとうございます。 試させていただきました。 下記のように4つの結合セルが並んでいるのですが、 教えてくださったマクロを実行したところ、 次のようになりました。 コピー元 A B C D コピー先 A A 実現したいのは、次のような動きなのですが、 使い方が悪いのでしょうか? コピー元 A B C D コピー先 A B C D

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.6

>結合セルが横に複数ある場合、それを縦方向にコピーするには ハードルが上げられましたね。 考えてみます。

nao-k
質問者

補足

ご指摘ありがとうございます。 >何らかの返事を差し上げるべきではないでしょうか 実施することが不明瞭なため、試せずにおり、返答に困っていました。 もし気分を害したのであれば申し訳ありません。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.5

ANo.4のコードを見直してみました。 Sub test2()   Dim acell As Range   Dim bcell As Range   Set acell = Sheets("Sheet1").Range("A1")   Set bcell = Sheets("Sheet2").Range("B1")   Do While acell.Value <> "" Or bcell.Value <> ""     If acell.Value <> "" And bcell.Value = "" Then       bcell.Value = acell.Value     ElseIf acell.Value = "" And bcell.Value <> "" Then       acell.Value = bcell.Value     Else       Exit Sub     End If     Set acell = acell.Offset(1, 0)     Set bcell = bcell.Offset(1, 0)   Loop   Set acell = Nothing   Set bcell = Nothing End Sub

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.4

試しにマクロを組んでみました。 結合セル・非結合セルを問いません。 Sub test()   Dim acell As Range   Dim bcell As Range   Dim myccell As Range   Dim mypcell As Range   Set acell = Sheets("Sheet1").Range("A1")   Set bcell = Sheets("Sheet2").Range("B1")   If acell.Value <> "" And bcell.Value = "" Then     Set myccell = acell     Set mypcell = bcell   ElseIf acell.Value = "" And bcell.Value <> "" Then     Set myccell = bcell     Set mypcell = acell   Else     Exit Sub   End If   Do While myccell.Value <> ""     mypcell.Value = myccell.Value     Set mypcell = mypcell.Offset(1, 0)     Set myccell = myccell.Offset(1, 0)   Loop   Set acell = Nothing   Set bcell = Nothing   Set mypcell = Nothing   Set myccell = Nothing End Sub

nao-k
質問者

お礼

アドバイス、コードのご教示ありがとうございます。 試してみました。 1つの結合セルをみごとに縦方向にコピーできました。 ありがとうございます。 結合セルが横に複数ある場合、それを縦方向にコピーするには どのようにすればよろしいでしょうか?

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

結合セルが連続している コピー元、コピー先の結合セルサイズは異なる コピー元の結合セルサイズは一定で同じ(例:2行1列) コピー先の結合セルサイズも一定で同じ(例:3行2列) といった前提条件が許される場合 仮に コピー元:Sheet1のA列、結合サイズは2行1列 コピー先:Sheet2のA列、結合サイズは3行2列 とします。 コピー先結合セルの先頭に、#Sheet1!A1 コピー先結合セルの2番目に、#Sheet1!A2 と入力 入力した 2個の結合セルを選択 選択枠の右下角の■(フィルハンドル)を下方にドラッグ&ドロップ そのまま範囲選択状態で 「置換」で 検索する文字列を、# 置換後の文字列を、= として「すべて置換」 続けて、そのままの範囲選択状態で Ctrl+Cで、コピー 「形式を選択して貼り付け」の「値」で貼り付け といった操作を試してください。

nao-k
質問者

補足

アドバイスありがとうございます。 実施する内容がいまいちよくわかりませんでした。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

サイズや結合を変えられないということは、値だけをコピーするという意味だと解釈できますが、個別セルの値を転記する形のループにすれば、エラーにはならず、コピーすることが可能です。(コードは1行では済みませんが・・・) ただし、セルの結合の形が違うので、どの値が生きてどの値が無視されてしまうかは、それぞれの結合の対応関係によります。 (結合セルの値は左上のセルが代表となっているため)  サンプルを示すまでもないでしょうが、一応・・・ For col = 1 To 10  For rw = 1 To 5   Cells(rw + 5, col + 10).Value = Cells(rw, col).Value  Next rw Next col

nao-k
質問者

お礼

アドバイスありがとうございます。 試してみようとしたのですが、試し方が判りませんでした。

  • higekuman
  • ベストアンサー率19% (195/979)
回答No.1

そのままは無理だと思います。 コピー元のデータを一旦別のところにペーストして、結合を解除し、コピー先の結合と同じサイズに結合しなおしてから、それをコピー先にコピー&ペーストする、という方法はどうでしょうか?

nao-k
質問者

お礼

アドバイスありがとうございます。 どのような内容をご指摘されているのか?を少し考えました。 せっかくなのですが、 アドバイスくださった内容ですと、数が膨大なため、あまり 手入力からのメリットがないように思います。

関連するQ&A