Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: verschiedene Maxima in einer Spalte

verschiedene Maxima in einer Spalte
17.07.2007 19:41:00
Peter
Hallo Forum,
ich habe folgendes Problem, dessen Lösung ich nicht wirklich hinbekomme:
In einer Spalte habe ich Werte in der Art stehen:
0 hier Bereichsanfang / Bereich 1 (z.B. Spalte A, hier A1)
1
2
10
5
3 hier Bereichsende / Bereich 1 ; A6
-1
-1
10 hier Bereichsanfang / Bereich 2 ; A9
14
4
6
8 hier Bereichsende / Bereich 2 ; A13
-1
-1
-1 u.s.w.
6
4
-1
u.s.w.
Wie man sieht sind die Bereiche durch die Zahl -1 getrennt. Ich möchte nun für jeden Bereich den Maximalwert bestimmen, was durch mühselige Handarbeit auch kein Problem wäre. Allerdings habe ich über 5000 Zeilen und das nimmt jedesmal Unmengen von Zeit in Anspruch.
Ein weiteres Problem für mich ist das die Bereiche variabel sein können, d.h. mal A1 -A6, es kann aber auch mit A5 - A8 beginnen, u.s.w..
Gibt es eine Möglichkeit, dass man die Bereichserkennung automatisiert und dann aus den erkannten Bereichen jeweils den Maximalwert ausliest ?
Schonmal vielen Dank für eure Hilfe, bin für jeden Lösungsansatz dankbar.
Gruß
Peter

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: verschiedene Maxima in einer Spalte
17.07.2007 20:30:37
Daniel
Hi
schau dir mal die Lösung an, ist zwar etwas aufwenig, dafür aber vielleich verständlich
https://www.herber.de/bbs/user/44181.xls
Gruß, Daniel

AW: verschiedene Maxima in einer Spalte
17.07.2007 20:52:00
Daniel
noch ein Hinweis:
ich bin jetzt immer von 2 aufeinander folgenen -1 ausgegangen.
solltei die Anzahl anders (aber immer gleich sein), muß man das in den Formeln entsprechend anpassen.
wenn die Anzahl der -1 als Trennzeichen variabel ist, wird natürlich für die Formellösung deutlich komplexer.
Gruß Daniel

Anzeige
AW: verschiedene Maxima in einer Spalte
17.07.2007 20:42:16
ingUR
Hallo, Peter,
neben der Lösung von Daniel, hier noch ein VBA-Lösungsansatz (Makro im Standardmodul-Ordner):

Option Explicit
Sub MaxInMultiBereich()
Dim rngC As Range, maxV As variant
For Each rngC In Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
If rngC  -1 Then
If rngC > maxV Then maxV = rngC
If rngC.Offset(1, 0) = -1 Then
rngC.Offset(0, 1) = maxV
maxV = -1
End If
End If
Next
End Sub


Hier wird davon ausgegangen, dass die Datenwerte nur positive Zahlen sind.
Nun weiß ich nicht, ob es lediglich ein Schreibfehler war, wo Du drei aufeinanderfolgende Werte "-1" auflistest oder es tatsächlich diese Freiheit in der Trennzeichenfolge gibt und darum berücksichtigt werden muß.
Gruß,
Uwe

Anzeige
AW: verschiedene Maxima in einer Spalte
17.07.2007 20:47:00
Peter
Hallo Peter,
davon ausgehend, dass deine Werte in Spalte A ab Zeile 1 stehen, werden dir die Maxima der Gruppen in Spalte B angezeigt:


Public Sub Maximum()
Dim lZeile   As Long
Dim lDazwi   As Long
Dim iAnfg    As Integer
Dim iEnde    As Integer
Dim iAnzahl  As Integer
   For lZeile = 1 To Range("A65536").End(xlUp).Row
      If Range("A" & lZeile).Value < 0 Then
         iEnde = lZeile
         iAnfg = iEnde - iAnzahl
         Range("B" & iAnfg).Value = Application.Max(Range("A" & iAnfg & ":A" & iEnde))
         iAnzahl = 0
         For lDazwi = (iEnde + 1) To Range("A65536").End(xlUp).Row
            If Range("A" & lDazwi).Value >= 0 Then
               lZeile = lDazwi - 1
               Exit For
            End If
         Next lDazwi
       Else
         iAnzahl = iAnzahl + 1
      End If
   Next lZeile
End Sub 


Gruß Peter

Anzeige
AW: verschiedene Maxima in einer Spalte
17.07.2007 22:13:25
Peter
Hallo Peter,
wenn der letzte Wert kein negativer Wert ist, dann so:


Public Sub Maximum()
Dim lZeile   As Long
Dim lDazwi   As Long
Dim iAnfg    As Integer
Dim iEnde    As Integer
Dim iAnzahl  As Integer
   Columns("B").ClearContents
   For lZeile = 1 To Range("A65536").End(xlUp).Row
      If Range("A" & lZeile).Value < 0 Or _
         lZeile = Range("A65536").End(xlUp).Row Then
         iEnde = lZeile
         iAnfg = iEnde - iAnzahl
         Range("B" & iAnfg).Value = Application.Max(Range("A" & iAnfg & ":A" & iEnde))
         iAnzahl = 0
         For lDazwi = (iEnde + 1) To Range("A65536").End(xlUp).Row
            If Range("A" & lDazwi).Value >= 0 Then
               lZeile = lDazwi - 1
               Exit For
            End If
         Next lDazwi
       Else
         iAnzahl = iAnzahl + 1
      End If
   Next lZeile
End Sub }


Gruß Peter

Anzeige
AW: verschiedene Maxima in einer Spalte
18.07.2007 11:25:00
Peter
erstmal danke an euch alle,
werde mir das alles mal anschauen. Kurze Info die -1 sind variabel, es können mal nur eine aber auch 20 sein, u.s.w.
Gebe dann entsprechend Rückmeldung
Gruß
Peter

AW: verschiedene Maxima in einer Spalte
18.07.2007 13:18:56
Peter
Servus Peter,
der Code funktioniert einwandfrei, hab noch ne kleine Änderung vorgenommen, da ich den Maximalwert neben der Bereichsendezelle haben wollte.
Range("Q" & iEnde - 1).Value = Application.Max(Range("R" & iAnfg & ":R" & iEnde))
Jetzt passt das einwandfrei.
Nochmal Dank an alle
Gruß
Peter
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige