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?
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?
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
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.
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.
Strotzt nicht grad vor Eleganz, aber es tut was es soll. Ich habs allerdings nicht sehr gründlich getestet.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.