Forum: PC-Programmierung Excel Marko, Zahlenreihe


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
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. ;)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.