VBA中要同时满足多个条件的代码怎么写?
答案:1 悬赏:0 手机版
解决时间 2021-04-04 01:24
- 提问者网友:呐年旧曙光
- 2021-04-03 21:48
VBA中要同时满足多个条件的代码怎么写?
最佳答案
- 五星知识达人网友:怙棘
- 2021-04-03 22:14
这个本来计算量就很大的,很难改得更快,但是可以把代码改得更简洁。最好能上传excel文件,比较方便修改。因为没有原始数据,有点抽象费脑啊。
要是有文件并且说明你要的效果是什么,就好办多了。追问
不知道如何上传附件,截图看看能不能表达出来意思,请帮忙简化简化
追答最大值,最小值是什么意思啊追问最小值<就是条件二、三、四、五的值<最大值,最大值最小值是手动输入的追答多条件同时成立,就是用and,如果条件有优先级,就用嵌套if。你这个不是说怎么用多条件的问题,主要问题是逻辑,如果优化逻辑和循环。我主要是不明白最大值最小是是什么意思。是指两个数的差的最大值和最小值吗?追问对,条件二是第六列数和第五列数的差值,以此类推追答
arr(1) = a
arr(2) = b
arr(3) = c
arr(4) = d
arr(5) = e
arr(6) = f
arr(7) = g
''条件1不满足
For k = 1 To 5
If Cells(arr(k), k) > Cells(arr(k + 1), k + 1) Then
GoTo for7end ''跳出g所在层循环
End If
Next k
f6 = Cells(f, 6)
i = 4
'''条件2-5不满足
For k = 5 To 2 Step -1
f6diff = f6 - Cells(arr(k), k)
If f6diff < Range("l" & i) Or f6diff > Range("m" & i) Then
GoTo for7end ''跳出g所在层循环
End If
i = i + 1
Next k
x = x + 1
''生成组数控制
If x - 3 > Range("Q6") Then
Exit Sub
End If
For k = 1 To 7
Cells(x, k + 18) = Cells(arr(k), k)
Next k
for7end: ''g层循环结束标号
Next
Next
Next
Next
Next
Next
Next
End Sub是不是这样
要是有文件并且说明你要的效果是什么,就好办多了。追问
不知道如何上传附件,截图看看能不能表达出来意思,请帮忙简化简化
追答最大值,最小值是什么意思啊追问最小值<就是条件二、三、四、五的值<最大值,最大值最小值是手动输入的追答多条件同时成立,就是用and,如果条件有优先级,就用嵌套if。你这个不是说怎么用多条件的问题,主要问题是逻辑,如果优化逻辑和循环。我主要是不明白最大值最小是是什么意思。是指两个数的差的最大值和最小值吗?追问对,条件二是第六列数和第五列数的差值,以此类推追答
arr(1) = a
arr(2) = b
arr(3) = c
arr(4) = d
arr(5) = e
arr(6) = f
arr(7) = g
''条件1不满足
For k = 1 To 5
If Cells(arr(k), k) > Cells(arr(k + 1), k + 1) Then
GoTo for7end ''跳出g所在层循环
End If
Next k
f6 = Cells(f, 6)
i = 4
'''条件2-5不满足
For k = 5 To 2 Step -1
f6diff = f6 - Cells(arr(k), k)
If f6diff < Range("l" & i) Or f6diff > Range("m" & i) Then
GoTo for7end ''跳出g所在层循环
End If
i = i + 1
Next k
x = x + 1
''生成组数控制
If x - 3 > Range("Q6") Then
Exit Sub
End If
For k = 1 To 7
Cells(x, k + 18) = Cells(arr(k), k)
Next k
for7end: ''g层循环结束标号
Next
Next
Next
Next
Next
Next
Next
End Sub是不是这样
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯