【发布时间】:2016-04-25 18:31:48
【问题描述】:
我有一张有几列的工作表,如果列 D 与文本框中的名称匹配,我想要在列 A 中显示最高数字。
这是我要在工作表上工作的公式,以显示最后使用的数字。
=MAX(INDEX((D2:D41=L11)*B2:B41,0))
我遇到的问题是我无法将其转换为 VBA
'Cells with dates also return a value, and get covered for determining largest value. Percentages will convert and return numerics.
Dim rngVal As Range
Dim rngName as range
Dim Max As Double
Dim Name As String
'Set range from which to determine largest value
Set rngVal = sheets("Payment History").Range("B2:B41")
Set rngName = sheets("Payment History").Range("D2:D41")
Name = Me.TextBox1.value
'Worksheet function MAX returns the largest value in a range
Max = Application.WorksheetFunction.Max(rngVal)
'Displays largest value
MsgBox Max
End Sub
这是我拥有的代码,它显示所有值的最大数量。
【问题讨论】:
-
我理解正确吗。该公式正在起作用。然而,您想在 VBA 中重新编程(避免使用公式中的函数)?我可以问为什么吗?生成的 VBA 代码解决方案的性能只能是次要的。
-
为什么不直接使用
Evaluate("MAX(IF(" & rngName.Address & "=L11," & rngVal.Address & "))")? -
@Ralph,嗨 Ralph,是的,我是正确的,我需要对其进行编码的原因是我将为另一张工作表使用更大的代码,所以我需要它能够告诉用户,他们选择的名字的最后一个数字是什么,所以他们可以使用下一个数字。谢谢
-
@DirkReichel,感谢您的评估工作完美。如果您发布答案,我会为您标记。再次感谢!!
标签: vba excel excel-2010