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:从最大值循环并检查条件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Excel VBA 宏循环行?

VBA if语句

Excel VBA代码查找列中的最大单元格值并删除其下方的所有行

如何将EXCEL中符合条件的数据利用公式复制到另一个工作表

是excel如何获得有条件的最大数量?

Excel VBA根据条件从一个工作表复制到其他工作表特定单元格