eine kleine Rätselfrage

  • Doch. :thumbup:


    Du kopierst doch nicht einfach von irgendwo her irgend welche Anweisungen, sondern Du erstellst dir welche je nach Aufgabenart.


    Falls nein: wo bekomme ich Deine excel-Version her, die auf Textaufgaben entsprechend richtig reagiert? ?( :D :D


    Hallo Michi.


    Irgendwie verstehen wir uns momentan nicht ganz. Ich weiß jetzt nicht ganz, woran das liegt, denn wie ich meine bist Du doch in Excel rel. fit, oder gilt das für Makros nicht???


    Was mache ich: ganz "primitiv", mal die Felder mit 1, 2, 3 und 4 bezeichnet, setze 1 in die Felder 1 bis 4, erhöhe Feld 1 jeweils um 1 bis neun (immer auswerten nach jeder Erhöhung), dann erhöhe Feld 2 um 1, setze Feld 1 auch auf 1 und fange wieder mit der Erhöhung von F1 an. Ist es wieder 9, wird F2 um1 auf 3 erhöht, F1 wieder 1, und neuer Anfang. Usw. bis Feld 2 auch neun ist, dann wird F3 um 1 erhöht, F1 und 2 auf 1, neue Schleife.


    Da immer ausgewertet wird, bekommt man alle Kombinationen die die Bedingung erfüllen. Ich würde das ncht als "Formel" bezeichnen, denn mit Formeln geht das (m.W.) auch nicht, dazu ist schon ein Makro notwendit, wobei es hier um 4 ineinander verschachtelte Schleifen geht.


    Eine "andere" Excel-Version ist dazu nicht notwendig. Mit Makros vertraut?Dann lasse das letzte einfach mal laufen, dann siehst Du es. Mit Makros nicht vertraut, dann wäre es an der Zeit, dass ich Dir hier eine Anfangs-Starthilfe gebe... :)

  • Charly, Du verstehst mich nicht. :S


    Ob Formel oder Makro, ob Programm oder sonst was: Tatsache ist doch, dass Du Dir vorher überlegen musst, was Du zum Lösen der Aufgabe eingibst. Nur darum ging es, und um nichts anderes.


    'Dein' Excel macht nur das, was Du ihm mit gibst; so einfach ist das. :thumbup: Und das ist keine Besonderheit von Excel; das machen 1000 andere Programme genau so.

    Navigation über Festeinbau (seit 2022 TomTom) und natürlich mit POIbase auf Smartphone via BT aufs Auto (Qashqai Akari).

  • Charly, Du verstehst mich nicht. :S


    Ob Formel oder Makro, ob Programm oder sonst was: Tatsache ist doch, dass Du Dir vorher überlegen musst, was Du zum Lösen der Aufgabe eingibst. Nur darum ging es, und um nichts anderes.


    'Dein' Excel macht nur das, was Du ihm mit gibst; so einfach ist das. :thumbup: Und das ist keine Besonderheit von Excel; das machen 1000 andere Programme genau so.


    Ja, o.K., wir sind aber immer noch nicht auf einem Level.


    Ich benuz(t)e ein Makro dazu, das alle Möglichkeiten "durchnudelt".


    Mit Formel kann - ich - es mir nicht vorstellen.


    Aber das ist doch eine der großen Möglichkeiten von Excel, dass es mehrere - bis viele -Möglichkeiten gibt, ein Problem zu lösen. Und hier war doch wohl die Makro-Lösung besser - zumindest in erster Näherung - als die von Dir gewählte.

  • Charly: eine Frage habe ich (habe keine 'Hilfe' installiert und finde auch nichts Funktionierendes in Google): wenn ich in einer For - Next - Schleife unter bestimmten Umständen (Abfrage) gleich den nächsten Wert verarbeiten möchte (also den aktuellen überspringen), so geht das in REXX mit 'ITERATE'. Laut Google soll das in Visual basic mit 'continue for' funktionieren; frißt mein Excel aber nicht.


    Kennst Du die entsprechende Anweisung?

    Navigation über Festeinbau (seit 2022 TomTom) und natürlich mit POIbase auf Smartphone via BT aufs Auto (Qashqai Akari).

  • Hallo Michi,


    da komme ich gerne darauf zurück, wenn ich nicht gerade meine "Durchnudelei" in Arbeit hätte.


    Denn: die Aufgabe ist noch erweiterbar: welches ist der kleinste, welches der größte wert, der möglich ist.


    Der kleinste ist noch überschaubar, denn er ist das "Quartett" aus 1, 2, 3 und 4, also 12 + 34 + 13 + 24, also als Summe 83. Außerdem wäre es interessant zu wissen, ob es zwischen dem kleinsten und dem größten Wert kontinuierlich weiter geht oder ob Lücken bestehen. Und das läuft momentan und dauert natürlich.


    Ich würde Dein Makro gerne laufen lassen, es sind Befwhle rin, die nicht so sein müssen.


    Und zu Deiner Frage würde ich auch gerne noch nähere Untersuchungen vornehmen, wenn man nicht generell davon ausgeht, dass die Auswertung ja ein Makro (normal) nicht stoppt, sondern dass es automatisch ja weitergeht.


    Zu Deinem Makro mal vorab: Worksheet muss sicher nicht sein, denn im Worksheet - dem akgtuellen, momentanen, befindet man sich ja so wie so, muss also nicht jedes mal explizit angegeben werden. Aber das möchte ich mal "laufen" lassen. Melde mich dann.


    Momentan befindet sich die Schleife 83 to 400 gerade mal bei 92, wird also noch etwas dauern. :D

  • Und zu Deiner Frage würde ich auch gerne noch nähere Untersuchungen vornehmen, wenn man nicht generell davon ausgeht, dass die Auswertung ja ein Makro (normal) nicht stoppt, sondern dass es automatisch ja weitergeht.


    Ich weiß grad nicht, ob Du meine Frage verstanden hast...


    Da ist eine for next Schleife (1 bis 10). Als erste Anweisung in der Schleife wird ein Wert geprüft - wenn die Abfrage positiv ist, sollen alle anderen Anweisungen in der Schleife für diesen Wert, an dem die Schleife grad hängt, nicht durchgeführt werden.


    Die Schleife wird aber nicht verlassen, sondern nur die Anweisungen werden übersprungen, und die Schleife setzt oben fort mit dem nächsten Schleifenwert.


    Und noch eine Frage: alle if-Abfragen werden abgearbeitet. In REXX kann man aber stattdessen mit SELECT arbeiten. Das heisst: unter dem SELECT kommen mehrere WHEN-Anweisungen (analog zu if) mit dem Unterschied, dass alle weiteren WHEN-Abfragen übersprungen werden, sobald sich eine WHEN-Anwesiung als 'true'herausstellt (Rechenzeit sparen :thumbup: ). Gibt es hier auch so etwas?

    Navigation über Festeinbau (seit 2022 TomTom) und natürlich mit POIbase auf Smartphone via BT aufs Auto (Qashqai Akari).

  • Hm, das ist die Frage.


    Eine Schleife in VBA (Excel) kann mit EXIT verlassen werden, dann wird nach der/den Schleifen weitergemacht. Probier das mal.


    Und gebe mir Dein Makro mal als TXT-Anhang, möchte es doch gerne mal laufen lassen. Das ist z.B. sinnvoll, wenn es nur eine Lösung gibt und man danach nich weiter in den Schleifen hängen bleiben will.


    Und: was ist REXX???

  • So, Michi.


    Dein Makro mactim Prinzip nichts anderes als meines, nur der Weg dahin ist ein anderer, da 2 Leute meist anders programmieren.


    Ich möchte jetzt Dein Makro nicht "auseinander" nehmen, das gelingt meist nur spärlich.


    Einen Hinweis aber hätte ich:


    Deine Zeile(n)


    Worksheets("Tabelle1").Range("A1").Value = a


    ist eine Möglichkeit eine Zelle anzusprechen. Ich verwende meist den anderen (direkteren) Weg:


    Cells(1, 1).Value = a.


    Der Unterschied ist der, dass bei Dir ein "Range" Argument verwendet wird (sollte auch ohne Worksheet und auch ohne Tabelle 1 gehen, denn wenn man weder das Arbeitsblatt noch die darin befindliche Tabelle wechselt, befindet man sich ja immer in dem/derselben) das mir der Zeilen/Spalten-Bezeichnung "A1" angesprochen werden kann, während "Cells" mit Cells(3,5) meint, Zeile 3, Spalte 5. Das ist ein wenig verwirrlicher, zumal wenn es über Spalten geht, die "größer" sind. Da empfiehlt sich dann im Kopf eine "Zählzeile" die mit


    for i = 1 to x
    ---cells(1,i).value = i
    next i


    einfach erzeugt werden kann. Das erleichtert letztlich die Eingabe der Spaltenzahl ohne abzählen zu müssen. Was aber die Zeile 1 schon belegt.


    Lass mal mein Makro laufen, dann siehst Du den/einen Unterschied.


    Wie schon gesagt, viele Wege führen nach Rom...

  • Korrektur zum Schleifen-verlassen:
    Aus der Hilfe:


    Exit For Bietet eine Möglichkeit zum Verlassen einer For-Schleife und kann nur in einer For...Next- oder For Each...Next-Schleife verwendet werden. Exit For hat zur Folge, daß die Ausführung mit der ersten Anweisung im Anschluß an die Next-Anweisung fortgesetzt wird. In verschachtelten For-Schleifen übergibt Exit For die Steuerung an die Schleife der nächsthöheren (= aufrufenden) Verschachtelungsebene.


    Der Befehl lautet also richtig:
    Exit For


  • Ich verwende meine methode deshalb immer, weil ich in einigen Sheets mehrere Tabellenblätter verwende (siehe auch auf meiner Homepage).


    Außerdem verwende ich normalerwise auch statt des "A" Variablen, so dass ich immer je nach Wunsch nur oben bei der Variablendefinition Änderungen pflegen muss; ich muss mir nicht irgendwo im Programm die entsprechenden Stellen suchen. ^^

    Navigation über Festeinbau (seit 2022 TomTom) und natürlich mit POIbase auf Smartphone via BT aufs Auto (Qashqai Akari).

  • ,

    Korrektur zum Schleifen-verlassen:
    Aus der Hilfe:


    Exit For Bietet eine Möglichkeit zum Verlassen einer For-Schleife und kann nur in einer For...Next- oder For Each...Next-Schleife verwendet werden. Exit For hat zur Folge, daß die Ausführung mit der ersten Anweisung im Anschluß an die Next-Anweisung fortgesetzt wird. In verschachtelten For-Schleifen übergibt Exit For die Steuerung an die Schleife der nächsthöheren (= aufrufenden) Verschachtelungsebene.


    Der Befehl lautet also richtig:
    Exit For



    Ich wusste, dass Du meine Frage nicht verstanden hast. :thumbup: :thumbup:


    Lies sie noch mal gaaaanz langsam. :rolleyes:



    Nein, ich will die Schleife nicht verlassen, sondern ich will nur einen Durchlauf überspringen.


    Beispiel:


    for a = 1 to 10
    If a=3 then keine Anweisungen durchführen, sondern mit dem nächsten Wert (4) wieder bei for weitermachen.
    Anweisung
    Anweisung
    Anweisung
    Anweisung
    Anweisung
    Anweisung
    Anweisung
    Anweisung
    Anweisung

    next

    Navigation über Festeinbau (seit 2022 TomTom) und natürlich mit POIbase auf Smartphone via BT aufs Auto (Qashqai Akari).

  • Das ist leider auch beliebig schwierig.


    Wenn ich jetzt etwas mehr am roten faden bin, dann könnte man


    If a=3 then
    ---a=4
    ---Exit For
    End If


    nehmen, das würde dann in der nächst geschachtelten Schleife weitermachen. Oder konkreter, in dieser Schleife mit dem nächsten Schleifenwert 4 weitermachen und die darunter (unter if...) stehenden Anweisungen überspringen.

  • Ok, ich will keinen workaround - ich such edie entsprechende Anweisung.


    Die muss es geben!


    Wie gesagt: "continue for" finde ich in Google als VB-Anweisung, die genau das macht, aber sie funktioniert in meinem Excel nicht.

    Navigation über Festeinbau (seit 2022 TomTom) und natürlich mit POIbase auf Smartphone via BT aufs Auto (Qashqai Akari).

  • Ok, ich will keinen workaround - ich such edie entsprechende Anweisung.


    Die muss es geben!


    Wie gesagt: "continue for" finde ich in Google als VB-Anweisung, die genau das macht, aber sie funktioniert in meinem Excel nicht.


    Die paar Zeilen sollten das aber machen.


    Und nicht vergessen: es gibt große Unterschiede zwischen VB und VBA. Sogar zwischen VBA-Excel, -Word, -Access... Die sind differentiell grundverschieden. Leider.