<p>在@chris neilsen的输入错误之后,再加上<a href="https://www.reddit.com/r/excel/comments/4awg50/detecting_and_overwriting_resets_in_vba/d14460c" rel="nofollow">this thread</a>中的一些工作,最后的(工作)脚本如下:</p>
<pre><code>Sub ProcessData_test(ByVal RawColumn As String, ByVal ProcessedColumn As String)
Dim NumRows As Integer
Dim ResetValue As Integer
Const ps As String = "test2"
Const rds As String = "test1"
With Sheets(rds)
NumRows = .Range(RawColumn & .Rows.Count).End(xlUp).Row
End With
'MsgBox NumRows
ResetValue = 0
'First Row
Worksheets(ps).Range(ProcessedColumn & 1).Value = Worksheets(rds).Range(RawColumn & 1).Value
'All other rows.
For i = 2 To NumRows
If Worksheets(rds).Range(RawColumn & i).Value >= Worksheets(rds).Range(RawColumn & i - 1).Value Then
Worksheets(ps).Range(ProcessedColumn & i).Value = Worksheets(rds).Range(RawColumn & i).Value + ResetValue
Else
ResetValue = Worksheets(ps).Range(ProcessedColumn & i - 1).Value
Worksheets(ps).Range(ProcessedColumn & i).Value = Worksheets(rds).Range(RawColumn & i).Value + ResetValue
End If
Next i
End Sub
</code></pre>