Excel Marko, Zahlenreihe

Gast #5409638
Lesenswert?
• ▲
▼
Hallo Leute,

ich habe eine Frage zum Excel Makro, wovon ich nicht viel Ahnung habe.

Ich möchte ein Makro schreiben, welches aus Nullen und Einsel eine Folge 
herausliest. z.B.: 0000000000111101111100000000000

Ich möchte mit dem Makro bestimmen, wie viele Folgen von einsen 
existieren und wie lang diese jeweils sind. z.B: es gibt 3 folgen von 
einsen, diese sind jeweils 111 , 111111, 11111. Das Programm soll mir 
sagen:
Folgen : 3 , längste Folge: 6

Jede Zelle enthält dabei eine 1 oder 0 und ist ein Reihe B gespeichert.

Was schreibe ich in das Marko?
Kann mir jemand weiterhelfen?
Gast #5409691
Lesenswert?
• ▲
▼
ich habe statt dem Makro noch eine andere Möglichkeit gefunden:
=WENN(B1="1";ZEILE()-MAX(($B$1:B="0")*(ZEILE($B$1:B1)))+1;WENN(B1="0";ZE 
ILE()-MAX(($B$1:B1="1")*(ZEILE($B$1:B1)))+1;""))


als matrix.

Funktioniert aber noch nicht, wo liegt der Fehler?
#5409777
Lesenswert?
• ▲
▼
Hallo Sven,

sven schrieb:
> Hallo Leute,
>
> ich habe eine Frage zum Excel Makro, wovon ich nicht viel Ahnung habe.
>
> Ich möchte ein Makro schreiben, welches aus Nullen und Einsel eine Folge
> herausliest. z.B.: 0000000000111101111100000000000
>
> Ich möchte mit dem Makro bestimmen, wie viele Folgen von einsen
> existieren und wie lang diese jeweils sind. z.B: es gibt 3 folgen von
> einsen, diese sind jeweils 111 , 111111, 11111. Das Programm soll mir
> sagen:
> Folgen : 3 , längste Folge: 6

Dein Beispiel passt nicht zu Du der langen Zeichenkette oben.
Ist das Absicht?

>
> Jede Zelle enthält dabei eine 1 oder 0 und ist ein Reihe B gespeichert.

Dieser Satz ist leider komplett unverständlich.

> Was schreibe ich in das Marko?

Dem Marko die Haut aufschneiden und dann mit Edding drübergehen.

> Kann mir jemand weiterhelfen?#

Wenn Du Dir etwas Mühe gibst, und Dich verständlicher ausdrückst, gerne.
Gast #5409797
Lesenswert?
• ▲
▼
Makro schreiben ist im Prinzip trial and error. Das musst du selbst 
schreiben. Du brauchst im Prinzip eine (for-)Schleife, die bestimmte 
Zellen abläuft und genau das macht, was du vorgibts. Fang einfach an und 
stell hier mal code ein, dann kann man dir weiterhelfen.
Gast #5409836
Lesenswert?
• ▲
▼
Neues Modul in VBA-Projekt einfügen oder in ein vorhandenes:
1
Public Function FolgenGeben(strZahl As String) As String
2
    Dim i As Long
3
    Dim char As String
4
    Dim Folgen As Integer
5
    Dim LängsteFolge As Integer
6
    Dim iFolgen As Integer
7
    Dim iLängsteFolge As Integer
8
    
9
    For i = 1 To Len(strZahl)
10
        char = Mid$(strZahl, i, 1)
11
        If char = "1" Then
12
            If iLängsteFolge = 0 Then Folgen = Folgen + 1
13
            iLängsteFolge = iLängsteFolge + 1
14
        Else
15
            If iLängsteFolge > LängsteFolge Then LängsteFolge = iLängsteFolge
16
            iLängsteFolge = 0
17
        End If
18
    Next
19
    
20
    FolgenGeben = "Folgen: " & Folgen & ", längste Folge: " & LängsteFolge
21
End Function

danach in irgendeiner Zelle neue benutzerdefinierter Formel schreiben:
=FolgenGeben(B1)

in B1 soll der String stehen mit "111000111000" formatiert als Text 
sonst wird nicht richtig gezählt.

Rest ist glaube ich selbstverständlich.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.