mikrocontroller.net

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.
Autor: sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Peter M. (r2d3)
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: grundschüler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: ge-nka (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Neues Modul in VBA-Projekt einfügen oder in ein vorhandenes:
Public Function FolgenGeben(strZahl As String) As String
    Dim i As Long
    Dim char As String
    Dim Folgen As Integer
    Dim LängsteFolge As Integer
    Dim iFolgen As Integer
    Dim iLängsteFolge As Integer
    
    For i = 1 To Len(strZahl)
        char = Mid$(strZahl, i, 1)
        If char = "1" Then
            If iLängsteFolge = 0 Then Folgen = Folgen + 1
            iLängsteFolge = iLängsteFolge + 1
        Else
            If iLängsteFolge > LängsteFolge Then LängsteFolge = iLängsteFolge
            iLängsteFolge = 0
        End If
    Next
    
    FolgenGeben = "Folgen: " & Folgen & ", längste Folge: " & LängsteFolge
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.

Autor: A.. P. (arnonym)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Excel Marko… Ist das ein Freund von Photoshop Phillip?

Autor: Wühlhase (Gast)
Datum:
Angehängte Dateien:

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

Autor: Peter M. (r2d3)
Datum:

Bewertung
0 lesenswert
nicht 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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.