带条件的工作表function最大值

我有一个工作表有几列,我后面是显示列A中最高的数字,如果列D匹配文本框的名称。

这是我必须在工作表上工作的公式,以显示使用的最后一个数字。

=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代码的简单方法,您可以使用Evaluate函数。 对于你的例子,它看起来像这样:

 Public Sub Test() Dim rngVal As String Dim rngName As String Dim xMax As Double Dim xName As String 'Set range from which to determine largest value rngVal = Sheets("Payment History").Range("B2:B41").Address rngName = Sheets("Payment History").Range("D2:D41").Address xName = Me.TextBox1.Value 'Worksheet function MAX returns the largest value in a range xMax = Evaluate("MAX(IF(" & rngName & "=" & xName & "," & rngVal & "))") 'Displays largest value MsgBox xMax End Sub 

提示:不要使用NameMax因为它们是对象的属性,如果同一个“名称”连接到不同的对象types,有时VBA会感到困惑:)