Thema Datum  Von Nutzer Rating
Antwort
Rot zählen wie oft eine zahl konstant geblieben ist
25.11.2020 14:41:15 timtim
NotSolved
25.11.2020 15:34:23 Timm2020
NotSolved
25.11.2020 15:49:54 Gast34809
Solved

Ansicht des Beitrags:
Von:
timtim
Datum:
25.11.2020 14:41:15
Views:
928
Rating: Antwort:
  Ja
Thema:
zählen wie oft eine zahl konstant geblieben ist

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

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot zählen wie oft eine zahl konstant geblieben ist
25.11.2020 14:41:15 timtim
NotSolved
25.11.2020 15:34:23 Timm2020
NotSolved
25.11.2020 15:49:54 Gast34809
Solved