比较并计算Excel中的连续数据

时间:2015-07-23 20:15:43

标签: excel vba excel-vba

我正在尝试制作一个Excel宏来比较和计算来自同一列的数据。

具体来说,我只想计算一个单元格和单元格下面的单元格的绝对值都小于100。

结束目标:说下面的列是我拥有的数据,

241.197
96.747
88.325
156
53.666
55.372
-45.667
-207.152

我希望宏返回值2。 它需要计算 [96.747 88.325]

&安培;

[53.666 55.372 -45.667]

2 个答案:

答案 0 :(得分:3)

假设您有A列,其数据从A1

开始
sub countTotal

    dim i as integer
    dim sum as double
    dim count as integer

    for i = 1 to Cells(Rows.Count, "A").End(xlUp).row

        sum = Abs(Range("A" & i).Value) + Abs(Range("A" & i + 1).Value)
        if sum < 100 then count = count + 1
    next

    msgbox count
end sub

未经测试。您应该看看它是否计算了列中的最后一个值+后面的空值,如果是,则将循环缩短为1。

答案 1 :(得分:1)

Sub countTotal()

Dim i As Integer
Dim sum As Double
Dim count As Integer

For i = 1 To Cells(Rows.count, "A").End(xlUp).Row
    If Abs(Range("A" & i).Value) < 100 And Abs(Range("A" & i + 1).Value) < 100 Then
        count = count + 1
    Else
        count = count
    End If
Next

MsgBox count
End Sub

根据您的代码,这就是我想出的。如果数据如下所示,它表现良好:

120
70
-90
110
80
60

在这种情况下,宏返回值2。

问题是我的一些数据看起来像这样:

100
-80
90
70
-180
-190

宏返回值2,因为它计算[-80 90]和[90 70]。但我想这样做,以便当一组连续数据的绝对值都小于100时,宏将其计为1.因此,理想情况下,不要将2作为值返回,在这种情况下,宏应该返回1。 / p>

你能指引我朝正确的方向前进吗? 谢谢!