Sub 重整換算1()
Dim i As Integer
For i = 4 To Range("H4").End(xlDown).Row
Cells(i, "H") = Cells(i, "G") - Cells(i - 1, "G")
Next i
End Sub
然後如果又有一格 例如J = $I13-$I12 我又再呼叫一次重整換算2()
Sub 重整換算2()
Dim i As Integer
For i = 4 To Range("J4").End(xlDown).Row
Cells(i, "J") = Cells(i, "I") - Cells(i - 1, "I")
Next i
End Sub
試試看"重整換算"
Sub ex()
Dim arr As Variant
Dim a As Variant
Dim x%
arr = Array("H", "J", "N", "P") '放入要用公式的欄位
For Each a In arr
For x = 4 To Range(a & 65535).End(3).Row
Cells(x, a) = "=$" & Range(a & x).Offset(0, -1).Address(0, 0) & "-$" & Range(a & (x - 1)).Offset(0, -1).Address(0, 0) '放入公式H4=$G4-$G3,H5=$G5-$G4...以此類推
Next
Next
arr = Array("K") '放入要用公式的欄位
For Each a In arr
For x = 4 To Range(a & 65535).End(3).Row
Cells(x, a) = "=$" & Range(a & x).Offset(0, -3).Address(0, 0) & "-$" & Range(a & x).Offset(0, -1).Address(0, 0) '放入公式K4=$H4-$J4,K5=$H5-$J5...以此類推
Next
Next
End Sub
後來我用另外一種方式cells 去找那個會產生錯誤的儲存格 類似下面這種
Dim myRng As Range, endRng As Range
Dim i As Integer
Dim j As Integer
Dim k As Integer
Worksheets("資料更新").Activate
Set myRng = Sheets("資料更新").Range("A2:U2")
Set endRng = Worksheets("資料更新").Range("A1048576").End(xlUp).Offset(1, 0)
j = endRng.Row
k = Range("U2").Column
myRng.Copy
endRng.Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
On Error Resume Next
For i = 1 To k
If IsError(Cells(j, i)) Then
Cells(j, i).Value = Cells(j, i).Offset(0, -1).Value - Cells(j, i).Offset(-1, -1).Value
End If
Next i作者: n7822123 時間: 2020-4-11 01:12