Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1564to1568
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

Kleinster Wert mit Bedingung - große Range

Kleinster Wert mit Bedingung - große Range
19.06.2017 19:28:29
Marc
Hallo (nochmals) :)
Ich möchte für einen recht großen Bereich (30-40K zeilen,70 Spalten) den jeweils kleinsten und größten wert ermitteln mit einer Bedingung, in dem Bsp. ein Produkt.
Meine vorangegangen Frage war leider nicht so umsetzbar wie gedacht.
https://www.herber.de/forum/messages/1564802.html
Ich weiß, das der nun aufgeführte Code sehr viel zeit benötigt und umständlich ist.
Und falls ihr keine Bessere idee habt werde ich wohl auf die application.WorksheetFunction.DMax() umsteigen. Ich denke mir aber es muss doch einfacher und besser gehen wie diese Lösungen.
Der Hintergrund ist der folgende, für eine weiter Tabelle (deutlich weniger Zeilen), die mit eine For -Next schleife läuft benötige ich die Werte der jeweiligen Produkte
Für Anregungen wäre ich sehr dankbar!!
Sub minmax()
With ThisWorkbook.Worksheets("Produkte")
minA = 10000
minB = 10000
minC = 10000
For icol = 2 To .UsedRange.Columns.Count 'zb. Länder
For irow = 7 To .UsedRange.Rows.Count ' zb. Preise
Select Case .Cells(irow, 1) ' Produkte
Case Is = "A"
If .Cells(irow, icol)  maxA Then maxA = .Cells(irow, icol)
Case Is = "B"
If .Cells(irow, icol)  maxB Then maxB = .Cells(irow, icol)
Case Is = "C"
If .Cells(irow, icol)  maxC Then maxC = .Cells(irow, icol)
End Select
Next irow
.Cells(1, icol) = minA
.Cells(2, icol) = maxA
.Cells(3, icol) = minB
.Cells(4, icol) = maxB
.Cells(5, icol) = minC
.Cells(6, icol) = maxC
minA = 10000
maxA = 0
minB = 10000
maxB = 0
minC = 10000
maxC = 0
Next icol
End With
End Sub

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kleinster Wert mit Bedingung - große Range
19.06.2017 20:22:41
Daniel
Hi
bei großen Datenmengen könnte es sinnvoll sein, die Tabelle zu sortieren, so dass die gleichen Produkte direkt untereinander stehen.
dann kannst du den entsprechenden Zellbereich für dieses Produkt ermitteln und die einfachen MIN- und MAX-Funktionen verwenden.
Im Sortieren ist Excel sehr schnell.
Sub MinMax()
Dim Zelle1 As Range
Dim Zelle2 As Range
Dim minA, maxA, minB, maxB, minC, maxC
With ThisWorkbook.Worksheets("Produkte")
With .Range(.Cells(7, 1), Cells.SpecialCells(xlCellTypeLastCell))
.Sort key1:=.Cells(1, 1), order1:=xlAscending, Header:=xlGuess
Set Zelle1 = .Columns(1).Find(what:="A", lookat:=xlWhole, searchdirection:=xlNext)
Set Zelle2 = .Columns(1).Find(what:="A", lookat:=xlWhole, searchdirection:=xlPrevious)
With Range(Zelle1, Zelle2).Resize(, .Columns.Count)
minA = WorksheetFunction.Min(.Cells)
maxA = WorksheetFunction.Max(.Cells)
End With
Set Zelle1 = .Columns(1).Find(what:="B", lookat:=xlWhole, searchdirection:=xlNext)
Set Zelle2 = .Columns(1).Find(what:="B", lookat:=xlWhole, searchdirection:=xlPrevious)
With Range(Zelle1, Zelle2).Resize(, .Columns.Count)
minB = WorksheetFunction.Min(.Cells)
maxB = WorksheetFunction.Max(.Cells)
End With
Set Zelle1 = .Columns(1).Find(what:="C", lookat:=xlWhole, searchdirection:=xlNext)
Set Zelle2 = .Columns(1).Find(what:="C", lookat:=xlWhole, searchdirection:=xlPrevious)
With Range(Zelle1, Zelle2).Resize(, .Columns.Count)
minC = WorksheetFunction.Min(.Cells)
maxC = WorksheetFunction.Max(.Cells)
End With
End With
End With
End Sub
Gruß Daniel
Anzeige

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige