こんにちは!
VBAでの一例です。
各列1行目には、何かしらのデータが入っているものとします。
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub test() 'この行から
Dim i, j, k As Long
Application.ScreenUpdating = False
For j = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
Cells(Rows.Count, j).End(xlUp).Offset(1) = 1
Columns(j).UnMerge
Next j
For j = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
k = Cells(Rows.Count, j).End(xlUp).Row
For i = 1 To k
If Cells(i, j) = "" Then
Cells(i, j) = Cells(i - 1, j)
End If
Cells(k, j).Delete (xlUp)
Next i
Next j
Application.ScreenUpdating = True
End Sub 'この行まで
※ 一旦マクロを実行すると元に戻せませんので、別Sheetでマクロを試してみてください。
参考になれば良いのですが・・・m(_ _)m
結合セルを解除したと同時に(1操作だけで、設定とかで)質問のようなことは出来ないでしょう。
ステップが(1)セル結合解除(2)出来た空白セルに元(左上隅セル)のセルの値をセット
を結合セル範囲の1つずつ行うのでなければ。
セル結合を解いても範囲指定は残ってくれるが、そこでジャンプーセル選択ー空白セルーOKで残りのセルを範囲指定してくれるが、次の左上隅のセルの値を貼り付ける操作が、選択できたセル範囲を崩しまう。
既に回等が出ているので、そちらをやってみてください。
ーー
こういうのはそんなに利用頻度があるのかな。こんなところへ質問している間に10箇所ぐらいなら、操作で終わると思う。
ーー
人間がやることの繰り返しをVBAでやれば出来る。しかしそこまでやるか、と思う。
少数しかテストしてないが、下記のようなもの。
標準モジュールに
Sub test01()
Dim cl
Dim a As String
For Each cl In Range("A1:D30")
If cl.MergeCells = True And cl <> "" Then
a = cl.MergeArea.Address
v = cl.Value
MsgBox v
cl.UnMerge
Range(a) = v
End If
Next
End Sub
Range("A1:D30")を適当に変えて。
お礼
ありがとうございます!教えていただいたやりかたで出来ました。 惜しいところまでいってたんですね。関数を使う事を失念していました。 本当にありがとうごいました。