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
朝早くにご回答ありがとうございます。
試させていただきました。
結果、うまく実行できることを確認しました。
(途中に結合されていないセルがあるとその手前で止まる仕様なのですね。)
非常に助かりました。
ありがとうございます。
No.9
- 回答日時:
>コピー元 A B C D
>コピー先 A B C D
>コピー先 A B C D
>コピー先 A B C D
>コピー先 A B C D
上記のようになって欲しいのですか?
コピー元は1行
コピー先では、
同じ方向で
4行貼りつける
コピー先の行数は、コピー元のデータ数と同じ
ということですか?
今一度、コピー元とコピー先のレイアウト、結合セルサイズを説明していただけないでしょうか。
やりたいことをうまく説明できておらず、申し訳ありません。
>上記のようになって欲しいのですか?
はい。
>コピー先では、
>同じ方向で
>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それぞれで異なる行数の結合セルという意味)
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)
アドバイスありがとうございます。
内容が異なっている認識はないのですが・・・
もし表現(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
となるようにコードを検討すれば良いのかな?と
思って試行錯誤していますが、うまくいかないようです。
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
# 余談を聞き入れていただきありがとうございました。
# 気分を害していることはありませんので気にしないでください。
# よろしくお願いいたします。
引き続きのご対応ありがとうございます。
ご親切にありがとうございます。
試させていただきました。
下記のように4つの結合セルが並んでいるのですが、
教えてくださったマクロを実行したところ、
次のようになりました。
コピー元 A B C D
コピー先 A A
実現したいのは、次のような動きなのですが、
使い方が悪いのでしょうか?
コピー元 A B C D
コピー先 A B C D
No.6
- 回答日時:
>結合セルが横に複数ある場合、それを縦方向にコピーするには
ハードルが上げられましたね。
考えてみます。
この回答への補足
ご指摘ありがとうございます。
>何らかの返事を差し上げるべきではないでしょうか
実施することが不明瞭なため、試せずにおり、返答に困っていました。
もし気分を害したのであれば申し訳ありません。
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
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
アドバイス、コードのご教示ありがとうございます。
試してみました。
1つの結合セルをみごとに縦方向にコピーできました。
ありがとうございます。
結合セルが横に複数ある場合、それを縦方向にコピーするには
どのようにすればよろしいでしょうか?
No.3
- 回答日時:
結合セルが連続している
コピー元、コピー先の結合セルサイズは異なる
コピー元の結合セルサイズは一定で同じ(例:2行1列)
コピー先の結合セルサイズも一定で同じ(例:3行2列)
といった前提条件が許される場合
仮に
コピー元:Sheet1のA列、結合サイズは2行1列
コピー先:Sheet2のA列、結合サイズは3行2列
とします。
コピー先結合セルの先頭に、#Sheet1!A1
コピー先結合セルの2番目に、#Sheet1!A2
と入力
入力した 2個の結合セルを選択
選択枠の右下角の■(フィルハンドル)を下方にドラッグ&ドロップ
そのまま範囲選択状態で
「置換」で
検索する文字列を、#
置換後の文字列を、=
として「すべて置換」
続けて、そのままの範囲選択状態で
Ctrl+Cで、コピー
「形式を選択して貼り付け」の「値」で貼り付け
といった操作を試してください。
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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel 毎日手作業で時間がかかって、泣きたいです、、、VBAのプロの方、助けてください。。。 3 2022/10/25 04:26
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2023/03/12 12:16
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Visual Basic(VBA) Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、 2 2022/09/01 23:57
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- その他(Microsoft Office) EXCEL VLOOKUPに関する質問 5 2023/02/08 11:38
- Visual Basic(VBA) Excel(VBA) 特定の条件に該当する行の値、書式を同じセルにコピ&ペーストしたいです 1 2022/05/21 18:18
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/26 13:19
- Excel(エクセル) Excelで、結合したセルへのコピー 6 2022/09/12 09:56
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
VBAでの結合セルのコピー&ペースト
Excel(エクセル)
-
結合セルから結合セルへ値のコピー
その他(教育・科学・学問)
-
エクセルマクロで結合されたセルをコピー
Excel(エクセル)
-
-
4
VBA初心者です。結合セルを保持したまま挿入する方法を教えてほしいです。
Visual Basic(VBA)
-
5
行数の違う表に複数行をコピーする
Excel(エクセル)
-
6
エクセルで「コピー領域と貼り付け領域の形が違うため、情報を貼り付けることができません」とでます
Excel(エクセル)
-
7
日付が未入力の際はゼロか、空白にしたい
その他(Microsoft Office)
-
8
【VBA】コピー&複数個所のペースト繰り返し
Excel(エクセル)
-
9
エクセル マクロ 貼り付け先が空白でない場合 1行下に貼りつける
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの2ページ目の作り方
-
エクセル:マクロ「Application...
-
エクセルのアポストロフィを一...
-
Excel 行の連続データを列に参...
-
エクセルで勝手に「折り返して...
-
EXCELのオートフィルの設定を変...
-
VBAでセルがコピーされているか...
-
エクセルオートフィルで書式を...
-
エクセル 別シートへのコピー...
-
エクセルのコピペでクリップボ...
-
Excelで、横並べのデータを縦並...
-
エクセルで値だけコピーして背...
-
メールソフト「サンダーバード...
-
エクセルでの行数・列数を指定...
-
「選択範囲を解除してアクティ...
-
EXCELシートをPowerPointにきれ...
-
フォームのテキストボックスの...
-
Excelのコピー・切り取り機能が...
-
エクセルで右クリックができません
-
可視セル設定をデフォルトにしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル:マクロ「Application...
-
エクセルの2ページ目の作り方
-
エクセルのアポストロフィを一...
-
Excel 行の連続データを列に参...
-
エクセルで勝手に「折り返して...
-
Excelでコピーした行の挿入を繰...
-
EXCELのオートフィルの設定を変...
-
EXCELシートをPowerPointにきれ...
-
エクセルで、選択範囲の数値全...
-
Excel)軽いデーターのはずなの...
-
メールソフト「サンダーバード...
-
エクセルでの行数・列数を指定...
-
「選択範囲を解除してアクティ...
-
Excelに、ダブルクォーテーショ...
-
エクセル 別シートへのコピー...
-
エクセルオートフィルで書式を...
-
エクセルで値だけコピーして背...
-
EXELで複数のとびとびのセルを...
-
Excelで、横並べのデータを縦並...
-
エクセル・数値が変化したらカ...
おすすめ情報