Excel VBA:从最大值循环并检查条件
Posted
技术标签:
【中文标题】Excel VBA:从最大值循环并检查条件【英文标题】:Excel VBA: Loop from largest value and check for conditions 【发布时间】:2013-04-19 21:04:27 【问题描述】:我正在尝试编写执行以下操作的 Excel VBA 代码:
-
查找列中的最大值
检查 2 个条件以获得最大值:
满足2个条件,拉取最大值
如果不满足 2 个条件,则转到第 2 个最大值
重复上述步骤,直到找到一个满足 2 个条件的值
例如(我有成千上万的数据和多张工作表,这只是为了简化),
Col A Col B Col C Col D
5 0 0 苹果
10 1 0 苹果
15 (-1) 0 橙色
20 0 0 苹果
-
A 列最大值为 20
检查 2 个条件:
在 col B 或 col C 中查找非零和非负数
Col D:相当于苹果
输出应该等于 10(第 2 行)
我不知道该怎么做。请指出正确的方向。谢谢!
【问题讨论】:
【参考方案1】:这应该在 A 列中获得最高值:
Sub get_max()
Dim vMax As Variant
vMax = Application.WorksheetFunction _
.Max(Range("A:A"))
MsgBox vMax
End Sub
如果没有其他人回复,我会看看我能做些什么来找到其余的。
【讨论】:
【参考方案2】:为什么不用excel公式?
=MAX(IF(B1:B5>0,A1:A5,IF(C1:C5>0,A1:A5)))
如果你仍然想要 VBA,那么看看这个
Sub Sample()
Debug.Print Application.Evaluate("=MAX(IF(B1:B5>0,A1:A5,IF(C1:C5>0,A1:A5)))")
End Sub
【讨论】:
公式是否可以在没有 VBA 的情况下检查 D 列中的苹果、橙色?我不想在列中逐一进行。是否可以使用 1 个公式为我进行所有检查,包括在字符串中查找子字符串?谢谢!! 您到底想检查什么?假设 Col B 和 Col C 不存在。 检查 2 件事:1. col B 或 Col C 大于 0(您的公式确实如此) 2. Col D 等于 apple 所以它返回 10 你能解释更多吗?检查什么? 抱歉没有说明更多以上是关于Excel VBA:从最大值循环并检查条件的主要内容,如果未能解决你的问题,请参考以下文章