|
yukkoさん、keinさん、ハマゾウさん、おはようございます。
私も配列を使ってみました。
目的のデータを消去した状態(空白にする)でmainを実行してみて下さい。
>消去するセル数や、消去する回数は不特定です。
消去データは、虫食いのように飛び飛びの範囲でもOKです。
'=============================================================
Sub main()
Application.ScreenUpdating = False
Call データ加工(Range("a1:gr6000"))
' ↑加工するセル範囲を指定します。
Application.ScreenUpdating = True
End Sub
'=============================================================
Sub データ加工(rng As Range)
Dim myarray
Dim crow As Long
Dim ccol As Long
Dim frow As Long
Dim fcol As Long
myarray = rng.Value
frow = 1
fcol = 1
For ccol = 1 To UBound(myarray, 2)
For crow = 1 To UBound(myarray, 1)
If myarray(crow, ccol) <> "" Then
myarray(frow, fcol) = myarray(crow, ccol)
If frow + 1 > UBound(myarray, 1) Then
frow = 1
fcol = fcol + 1
Else
frow = frow + 1
End If
End If
Next
Next
For idx = fcol To UBound(myarray, 2)
For jdx = frow To UBound(myarray, 1)
myarray(jdx, idx) = ""
Next jdx
frow = 1
Next idx
rng.Value = myarray
End Sub
|
|