|
自己レスです。
オブジェクト変数を使って、変数の数は減らしてみました。
でも、やっぱりややこしいです。。。
Sub 数値の補完2()
Dim myC As Range, myR As Range
Dim tmpN As Double, minR As Range, maxR As Range
Dim j As Integer, k As Integer
For Each myC In Selection.Columns 'やはり、列ごとに処理
For Each myR In myC.Cells 'それをセル毎に分解。
If myR.Value <> 0 Then 'オブジェクトを使って処理する。変数の数は減る。
If minR Is Nothing Then
Set minR = myR
ElseIf Not minR Is Nothing Then
Set maxR = myR
End If
If Not minR Is Nothing And Not maxR Is Nothing Then
tmpN = Round((maxR.Value - minR.Value) / (maxR.Row - minR.Row), 2)
k = 1
For j = minR.Row + 1 To maxR.Row - 1
minR.Offset(k, 0).Value = minR.Value + tmpN * k
k = k + 1
Next j
Set minR = Nothing: Set minR = maxR
End If
End If
Next myR
Next myC
End Sub
|
|