作业帮 > 综合 > 作业

VBA 数据计算,简单的数据运算.

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/24 02:46:51
VBA 数据计算,简单的数据运算.
我想让A列中的数据经过程序的计算得到如下结果.在A列中从上到下,如果第n个数比上面第n-1个数小m,那么从第n个数起一直到最后一个数都要加上m.直到最后,所有的数从上到下都依次增大.例如我的数据经过两步达到如下结果.

Sub 数据计算()
Sheets("Sheet1").Select
n = [B65536].End(xlUp).Row
For i = 1 To n
    If Sheets("Sheet1").Range("B" & i + 1).Value >= Sheets("Sheet1").Range("B" & i).Value Then
   
    Sheets("Sheet1").Range(" C" & i + 1).Value = Sheets("Sheet1").Range("B" & i + 1).Value
    Else
 
   Sheets("Sheet1").Range("C" & i + 1 & ":C" & n).Value = Sheets("Sheet1").Range("B" & i + 1 & ":B" & n).Value + (Sheets("Sheet1").Range("B" & i).Value - Sheets("Sheet1").Range("B" & i + 1).Value)

End If
Next i
End Sub
我的程序老是错误.请大侠改正啊.没你不行吖.
其实我的数据计算源自于这个问题,现在原始数据X坐标值没有问题,只是Y的值除了问题,Y值是不该降下来的,只能增长.原始数据画的图是这样子的如图1

我想正确的图应该是这样的如图2

不知道该怎么处理数据,使数据恢复正常.
各位大侠都很好很专业.各位大写处理后的程序绘出的图是这个样子的,如图3

跟图2 不一样啊,请问怎么修改啊?
工作表名称上点右键选查看代码,弹出窗口粘贴以下代码
Sub 数据计算()
Dim arr()
n = [b65536].End(xlUp).Row
arr = WorksheetFunction.Transpose(Range(Cells(1,2),Cells(n,2)).Value)
For i = 1 To UBound(arr) - 1
If arr(i) > arr(i + 1) Then
m = arr(i) - arr(i + 1)
For h = i + 1 To UBound(arr)
arr(h) = arr(h) + m
Next
End If
Next
Range("C1").Resize(UBound(arr),1) = WorksheetFunction.Transpose(arr)
End Su