使用範囲が少なければ、時間はそれほどかからないと思います…
Sub 結合解除()
Dim 範囲 As Range
Dim 結合範囲 As Range
Dim 値 As Variant
For Each 範囲 In ActiveSheet.UsedRange
If 範囲.MergeCells Then
Set 結合範囲 = 範囲.MergeArea
値 = 範囲
範囲.UnMerge
結合範囲 = 値
End If
Next
End Sub
たとえば
sub macro1()
dim LastRow
’一番下にあるのが結合セルかそうでないかで,末尾セルの取り方を工夫
with range("A65536").end(xlup)
if .mergecells then
lastrow = .offset(1).row - 1
else
lastrow = .row
end if
end with
'セルを一個ずつなめるよりは,少し早くできると思います
range("A:A").unmerge
with range("A2:A" & lastrow)
.specialcells(xlcelltypeblanks).formular1c1 = "=R[-1]C"
.value = .value
end with
end sub
お礼
お返事が遅くなり申し訳ありません。 頂いたものをそれぞれ試してみて、一番シンプルかつ処理速度が早かった、 こちらのコードを使わせて頂きました!