|  
                                             
	Hallo Ihr VBA profis, 
	  
	mein Problem ist folgendermassen: habe eine zeitreihe und das makro zählt wie oft die werte hintereinander konstant geblieben sind und gibt mir dann die 3 größten wieder. Beispiel: die 8 ist 5 mal hintereinander konstant geblieben und das nur 1 mal. daher die bezeichnung 1x5. die zahl 1 ist 4 mal hintereinander konstant geblieben und das nur 1 mal daher 1x4. 
	  
	Und am ende möchte ich die drei größten aufgelistet haben. z.B in diesem falle: 
	1x5,1x4,2x3 . Hier haben wir haben wir 2x3 weil es zwei mal vorkommt, dass die zahl 3 mal hintereinander konstant geblieben ist. Den Code habe ich auch hinzugefügt jedoch komme ich mit der sortierung nicht ganz zurecht. Jede Hilfe ist dankend angenommen. 
	  
Zahlenreihe		Häufigkeit*AnzahlKonstant		Platzierung              Ausgaben:
1				                                                         1x5,1x4,2x3
1				
1				
1				
1		               1x4		                   2
4				
4			       1x3                                 3
4				
5				
5				
5				
5		               1x3		                   3
6				
6		               1x1		                   4
7				
8				
8				
8				
8				
8				
8		               1x5		                    1
 
Function Parameter_P01(RICParameterSet, ToleranzParaRegelCell, BerechnungRoh, lastRowmyRange, Steuerung, ParameterSet, i, myRange, myRangeAbs, myRangeRel, P01, P02, P03, P04, P05, P06, P07)
'**********************
'P01
'**********************
Dim AnzahlKonstantMAX As Integer
'Hier die Spalte gesucht ung gefunden um später die Parmeter in die richtige Spalte reinzuschreiben
P01MaxKonstColumn = WorksheetFunction.Match("MAX_KONSTANT", ParameterSet.Range("A1:AM1"), 0)
'Hier werden vorab die jeweilige Zelle im SHeet ParameterSet für den Max und Min parameter lokalisiert um es später einzutragen
Set P01MaxKonstEintrag = ParameterSet.Cells(i, P01MaxKonstColumn)
AnzahlKonstant = 0
AnzahlKonstantMAX = 0
For i = lastRowmyRange To 6 Step -1 ' mit Step -1 geht man in der Anzahl von oben nach unten
    Wert = BerechnungRoh.Rows(i).Columns("B")
    Wert_1 = BerechnungRoh.Rows(i - 1).Columns("B")
        'hier wird gezählt wie oft der RIC hintereinander konstant geblieben ist.
        If Wert = Wert_1 Then
            AnzahlKonstant = AnzahlKonstant + 1 'Hier wird erst einmal hochgezäglt wie oft der RIC hintereinander kosntant geblieben ist.
                If AnzahlKonstant > AnzahlKonstant3MAX Then 'Hier wird dann geschaut, ob die hintereinadner kosntantgebliebene Anzahl die bereits hochgezählte kostantanzahl übetsteigt. Wenn ja, wird es registriert.
                    If AnzahlKonstant > AnzahlKonstant2MAX Then
                       If AnzahlKonstant > AnzahlKonstant1MAX Then
                            'AnzahlKonstant2MAX = AnzahlKonstant1MAX 'wenn 3max ereicht ist, dann ist der vorherige 3max jetz tder 2th größte
                            AnzahlKonstant1MAX = AnzahlKonstant 'und der neue ist der größte
                       ElseIf AnzahlKonstant = AnzahlKonstant1MAX Then
                                Anzahl1Max = Anzahl1Max + 1
                       Else:  AnzahlKonstant2MAX = AnzahlKonstant 'wenn es größer als Max2 ist aber kleiner als Max1, dann muss es max2 sein
                       End If
                       
                    ElseIf AnzahlKonstant = AnzahlKonstant2MAX Then
                                Anzahl2Max = Anzahl2Max + 1
                    Else: AnzahlKonstant3MAX = AnzahlKonstant 'wenn es nicht größer als Max2 ist, dann muss es der 3th größte
                    
                    End If
                ElseIf AnzahlKonstant = AnzahlKonstant3MAX Then
                        Anzahl3Max = Anzahl3Max + 1 'Zählt dieanzahl, wie oft Max3 getroffen erreicht wurde
                End If
        Else: AnzahlKonstant = 0
        End If
Next i
If AnzahlKonstant1MAX < ToleranzParaRegelCell Then
   P01MaxKonstEintrag.Value = AnzahlKonstantMAX
Else: P01MaxKonstEintrag.Value = "Anzahl: #" & AnzahlKonstant1MAX & "t=" & Anzahl1Max & ";#" & AnzahlKonstant2MAX & "t=" & Anzahl2Max & ";#" & AnzahlKonstant3MAX & "t=" & Anzahl3Max
End If
	  
     |