結合セル解除
補足情報の追加書き込みがわかりませんので何度もトビを起こしいます。
申し訳ございません。
↓例で、
G列結合セルを解除して、解除した行にすべてに"●"と入れたいのですがコピーできません。。
ご意見をいただけませんか?
------------
Option Explicit
Sub Sample()
Dim nRow, i, Addr, tmp
Worksheets("Sheet1").Range("D:E,K:K,V:Y,AF:AM").Copy
With Worksheets("sheet2")
'Y列も"sheet2"にコピー(G列)
.Range("A1").PasteSpecial Paste:=xlPasteValues
nRow = .Cells(Rows.Count, 1).End(xlUp).Row 'データのある最終行
For i = 5 To nRow
If .Cells(i, 2) = "" Then .Cells(i, 2) = .Cells(i - 1, 2) 'B列
If .Cells(i, 4) = "" Then .Cells(i, 4) = .Cells(i - 1, 4) 'D列
Next i
'Y列("sheet2"のG列)のデータ分行を追加
For i = nRow To 4 Step -1
'Y列("sheet2"のG列)にデータがあるか
If .Cells(i, 7) <> "" Then
tmp = .Cells(i, 7)
'-------------ここがうまくいきません。
'G列結合セルを解除して対象行にすべて「OK」と入れる。
If .Cells(i, 7).MergeCells Then
Addr = .Cells(i, 7).MergeArea.Address
.Cells(i, 7).UnMerge
.Range(Addr) = "●"
End If
'------------ここがうまくいきません。
.Rows(i).Copy
.Rows(i).Insert
.Cells(i + 1, 3) = "-"
.Cells(i + 1, 6) = tmp
'.Cells(i, 7) = "●"
.Cells(i + 1, 7) = "★"
End If
Next i
'Y列("sheet2"のG列)の最後尾列(Q列)への移動
.Columns(7).Cut
.Columns(17).Insert
End With
End Sub
補足
ありがとうございました。 ↓のような事をおこないたいです。 変更前(Sheet1); (D列) (E列) (K列) (V列) (W列) (X列) (Y列) (AF - AM列) 1 ABCDEF テーブル1 ABC456 テーブル2 ABC789 ABC000 テーブル4 2 ABCDEF (ブランク) ABC456 (ブランク) ABC789 ABC000 (ブランク) 3 123456 (ブランク) ABC456 テーブル3 ABC789 ABC000 テーブル5 4 123456 (ブランク) ABC456 (ブランク) ABC789 ABC000 (ブランク) . . ※Y1-Y2は結合セル、Y3-Y4は結合セル 変更後(Sheet2); 例では追加は3,4行目です。 (A列) (B列) (C列) (D列) (E列) (F列) (AF - AM列) (G列) 1 ABCDEF テーブル1 ABC456 テーブル2 ABC789 ABC000 "OK" 2 ABCDEF テーブル1 ABC456 テーブル2 ABC789 ABC000 "OK" 3 ABCDEF テーブル1 - テーブル2 ABC789 テーブル4 "Comp" 4 123456 テーブル1 ABC456 テーブル3 ABC789 ABC000 "OK" 5 123456 テーブル1 ABC456 テーブル3 ABC789 ABC000 "OK" 6 123456 テーブル1 - テーブル3 ABC789 テーブル5 "Como" . . ※追加は3、6行目です。 Sheet1(Y列)に値があれば、 Sheet2(G列)に対象行単位で"OK"コメントをコピーする。 必ず最後に行追加して結合セルの値、"Comp"コメントをコピーする. 現象はマージセルの処理でループしてしまいます。 ご意見をいただけないでしょうか? ----------------- コード; Option Explicit Sub Sample() Dim nRow, i, nCount, tmp, sAddress, rRange Dim vInsertDat() As Variant Worksheets("Sheet1").Range("D:E,K:K,V:Y,AF:AM").Copy With Worksheets("Sheet2") .Range("A1").PasteSpecial Paste:=xlPasteValues nRow = .Cells(Rows.Count, 1).End(xlUp).Row 'データのある最終行 'Y列("Sheet2"のG列)のデータ分行を追加 For i = nRow To 4 Step -1 'Y列("Sheet2"のG列)にデータがあるか If .Cells(i, 7) <> "" Then tmp = .Cells(i, 7) 'G列の保管 rRange = .Range("G:G") 'G列結合セルの処理 nCount = 0 For Each rRange In .UsedRange If rRange.MergeCells Then 'G列結合セルの一番下の行値を配列に保存 nCount = nCount + 1 ReDim Preserve vInsertDat(1, nCount) vInsertDat(0, nCount) = rRange.MergeArea.Item(rRange.MergeArea.Count).Row vInsertDat(1, nCount) = rRange.Value 'G列結合セルをばらして結合セルの全てに「OK」と入れる sAddress = rRange.MergeArea.Address rRange.UnMerge .Range(sAddress) = "OK" End If Next rRange '行の追加 .Rows(i).Copy .Rows(i).Insert .Cells(i + 1, 3) = "-" .Cells(i + 1, 6) = tmp .Cells(i + 1, 7) = "Comp" End If Next i 'Y列("Sheet2"のG列)の最後尾列(Q列)への移動 .Columns(7).Cut .Columns(17).Insert End With End Sub