Ich habe ein Blatt, das mehrere Spalten hat, was ich hinterher möchte, ist die höchste Zahl in Spalte A anzuzeigen, wenn Spalte D mit dem Namen aus dem Textfeld übereinstimmt.Worksheet Funktion Max mit Bedingung
Dies ist die Formel, die ich auf dem Blatt arbeiten musste, um die zuletzt verwendete Nummer anzuzeigen.
=MAX(INDEX((D2:D41=L11)*B2:B41,0))
Das Problem, das ich bin, ist ich kann dies in 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
Dies ist der Code, den ich habe zu konvertieren zu bekommen, die die maximale Anzahl Sie alle Werte anzeigt.
Verstehe ich richtig. Die Formel funktioniert. Sie möchten dies jedoch in VBA neu programmieren (indem Sie die in der Formel verwendeten Funktionen vermeiden)? Darf ich fragen warum? Die Performance der resultierenden VBA-Code-Lösung kann nur unterlegen sein. – Ralph
warum nicht einfach 'Evaluate (" MAX (IF ("& rngName.Address &" = L11, "& rngVal.Address &"))))? –
@Ralph, Hi Ralph, ja, dass ich korrigiere, der Grund, warum ich es codieren muss, ist, dass ich mit einem größeren Stück Code für ein anderes Blatt arbeiten werde, also brauche ich es, um dem Benutzer zu sagen, was das ist die letzte Nummer war für den Namen, den sie ausgewählt haben, damit sie die nächste Nummer verwenden können. Danke – atame