Anzeige
Archiv - Navigation
1492to1496
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA: Maximalwert aus 2 Spalten

VBA: Maximalwert aus 2 Spalten
23.05.2016 13:18:07
Manuela
Hallo,
bräuchte mal einen Tipp von Euch.. :-)
Ich bin auf der Suche nach der Möglichkeit per VBA einen Maximalwert aus zwei Spalten zu suchen.
Meine Tabelle sind ungefähr so aus:

A	B
2015	300
2010	205
2015	145
2016	5
2016	3
2011	590
2011	245
2014	294
Als Ergebnis hätte ich gerne den größten Wert aus dem größten Jahr. In meinem Fall wäre es also der Wert 5 als Ergebnis.
Ein Sortieren der Spalten nach A(Aufsteigend)+B(Aufsteigend) würde ich ungern in Betracht ziehen. Gibt es eine andere Lösung?
Mein Originaldatensatz hat mehr als 5000 Zeilen.
Viele Grüße
Manuela

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Maximalwert aus 2 Spalten
23.05.2016 13:34:45
ChrisL
Hi Manuela
Da die Liste nicht sortiert ist, müssen alle 5000 Zeilen durchlaufen werden. Eine Sortierung könnte sich positiv auf die Performance auswirken.
Sub t()
Dim iZeile As Long, letzteZeile As Long
Dim cMax As Currency
letzteZeile = Cells(Rows.Count, 1).End(xlUp).Row
For iZeile = 1 To letzteZeile
If Cells(iZeile, 1) = WorksheetFunction.Max(Columns(1)) Then
If cMax 

cu
Chris

AW: VBA: Maximalwert aus 2 Spalten
23.05.2016 13:47:47
ChrisL
Hi
Den Ansatz von Uwe noch etwas erweitert. Ohne Schleife ist natürlich besser ;)
Sub t()
MsgBox Evaluate("MAX((A2:A100=" & WorksheetFunction.Max(Columns(1)) & ")*B2:B100)")
End Sub

cu
Chris

Anzeige
AW: VBA: Maximalwert aus 2 Spalten
23.05.2016 14:01:07
Daniel
Ob die Schleife jetzt direkt in VBA läuft oder intern ist eigentlich egal.
Bei Evaluate hast du die Schwierigkeit, einen variablen Zellbereich anzugeben.
Wenn mit VBA, dann würde ich es so machen, als eigene Funktion:
Function MaxWertAusMaxJahr(Jahre As Range, Werte As Range) As Double
Dim arrJ
Dim arrW
Dim MaxJahr As Long
Dim Z As Long
MaxWertAusMaxJahr = WorksheetFunction.Min(Werte)
MaxJahr = WorksheetFunction.Max(Jahre)
arrJ = Intersect(Jahre, Jahre.Worksheet.UsedRange)
arrW = Intersect(Werte, Werte.Worksheet.UsedRange)
For Z = 1 To UBound(arrJ, 1)
If arrJ(Z, 1) = MaxJahr Then If MaxWertAusMaxJahr 
die dann mit: =MaxWertAusMaxJahr(Columns(1), Columns(2)) eingesetzt werden kann.
das komfortable an meiner Funktion ist, dass sie den benötigten Zellbereich gleich automatisch mit ermittelt, so dass du in den Funktionsparametern auch ganze Spalten angeben kannst, ohne das überlange Rechenzeiten entstehen.
Gruß Daniel

Anzeige
Danke!
24.05.2016 06:47:06
Manuela
Grandios!
Vielen Dank an Daniel, ChrisL und UweD! :-)
Gruß
Manuela

AW: VBA: Maximalwert aus 2 Spalten
23.05.2016 13:40:23
UweD
Hallo Manuela
so?
Beispiel für 2016
Dim Jahr As Integer
Jahr = 2016
MsgBox Evaluate("MAX((A2:A100=" & Jahr & ")*B2:B100)")

Gruß UweD

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige