我正在尝试制作一个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]
答案 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>
你能指引我朝正确的方向前进吗? 谢谢!