Forum: PC-Programmierung Excel Marko, Zahlenreihe


von sven (Gast)


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?

von sven (Gast)


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?

von Peter M. (r2d3)


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.

: Bearbeitet durch User
von grundschüler (Gast)


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.

von ge-nka (Gast)


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.

von A.. P. (arnonym)


Lesenswert?

Excel Marko… Ist das ein Freund von Photoshop Phillip?

von Wühlhase (Gast)


Angehängte Dateien:

Lesenswert?

Strotzt nicht grad vor Eleganz, aber es tut was es soll. Ich habs 
allerdings nicht sehr gründlich getestet.

von Peter M. (r2d3)


Lesenswert?

Hallo Wühlhase,

das ist ja sehr nett von Dir, dass Du sven das Problem gleich gelöst 
hast.
Aber es wäre besser, er bekäme eine Angel anstelle ein Fischs. ;)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.