请问如何修改如下VBA代码计算出大于>0,小于<10的连续个数?
答案:2 悬赏:80 手机版
解决时间 2021-03-20 11:52
- 提问者网友:不爱我么
- 2021-03-20 04:59
请问如何修改如下VBA代码计算出大于>0,小于<10的连续个数?
最佳答案
- 五星知识达人网友:零点过十分
- 2021-03-20 06:36
已经可以了,只是显示的位置都在最后,是要增加颜色吗追问可是我执行后结果不对,你帮我修改一下吧,谢谢!不用加颜色的。追答选中数字以后执行,你看下行不行,我这边看好像没问题追问我执行后的结果,还有就是如果有负数或有零的时候,也计算出错误?
追答两个地方,一个是把第一个for的+1去掉,第二个是在第一个next i后面增加一行 aa(K) = x。
还有就是优化建议,显示结果可以移到第一个for里面,黄色字体的旁边,这样看起来也醒目,还能减少一个60000次的循环。
Sub 小于10的连续个数()
Set Rng = Selection(1)
a = Rng.Row
b = Rng.Column
Set Rng = Selection(Selection.Count)
c = Rng.Row
For i = a To c
If Cells(i, b) < 10 Then
Cells(i, b).Interior.ColorIndex = 6
x = x + 1
Else
If x <> 0 Then
Cells(i - 1, b + 1) = x
End If
x = 0
End If
Next i
Cells(i - 1, b + 1) = x
End Sub追问运行可以。可是我想把计算出的结果集中起来,而不是分散数值。能再修改一下吗追答如果结果要集中,只在原来代码基础上,按我说的改那两个地方就可以了
追答两个地方,一个是把第一个for的+1去掉,第二个是在第一个next i后面增加一行 aa(K) = x。
还有就是优化建议,显示结果可以移到第一个for里面,黄色字体的旁边,这样看起来也醒目,还能减少一个60000次的循环。
Sub 小于10的连续个数()
Set Rng = Selection(1)
a = Rng.Row
b = Rng.Column
Set Rng = Selection(Selection.Count)
c = Rng.Row
For i = a To c
If Cells(i, b) < 10 Then
Cells(i, b).Interior.ColorIndex = 6
x = x + 1
Else
If x <> 0 Then
Cells(i - 1, b + 1) = x
End If
x = 0
End If
Next i
Cells(i - 1, b + 1) = x
End Sub追问运行可以。可是我想把计算出的结果集中起来,而不是分散数值。能再修改一下吗追答如果结果要集中,只在原来代码基础上,按我说的改那两个地方就可以了
全部回答
- 1楼网友:蓝房子
- 2021-03-20 07:40
选中你的数据区,然后执行代码
Dim Arr, i As Integer, j As Integer
Arr = Selection: j = 0
For i = 1 To UBound(Arr, 1)
If Arr(i, 1) > 0 And Arr(i, 1) < 10 Then
j = j + 1: Arr(i, 1) = j
Else
j = 0: Arr(i, 1) = ""
End If
Next
Selection.Offset(0, 1) = Arr
End Sub
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯