2

我正在尝试编写执行以下操作的 Excel VBA 代码:

  1. 查找列中的最大值
  2. 检查最大值的 2 个条件:
    • 如果满足2个条件,拉取最大值
    • 如果不满足 2 个条件,则转到第 2 个最大值
  3. 重复上述步骤,直到找到一个满足 2 个条件的值

例如(我有数千个数据和多张工作表,这只是为了简化),

Col A Col B Col C Col D

5 0 0 苹果

10 1 0 苹果

15 (-1) 0 橙色

20 0 0 苹果

  1. A列中的最大值为20
  2. 检查2个条件:
    • 在 col B 或 col C 中寻找非零和非负数
    • Col D:等于苹果

输出应等于 10(第 2 行)

我不知道该怎么做。请指出正确的方向。谢谢!

4

2 回答 2

0

这应该在 A 列中获得最高值:

Sub get_max() 
    Dim vMax As Variant 

    vMax = Application.WorksheetFunction _ 
    .Max(Range("A:A")) 

    MsgBox vMax 

End Sub 

如果没有其他人回复,我会看看我能做些什么来找到其余的。

于 2013-04-25T20:22:36.617 回答
0

为什么不用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
于 2013-04-25T20:36:38.767 回答