Sub ping Makro erweitern, ist folgende Aufgabe für dieses Makro machbar und wenn ja wer könnte mir da eventuell helfen?

...komplette Frage anzeigen

2 Antworten

wie sieht denn das Makro konkret aus?

Mit einer for oder while-Schleife kann man die 10000 Versuche abbilden, dazu müsste noch eine Variable verwendet werden, um nacheinander die Ergebnisse in die jeweils nächste Zeile zu kopieren.

Das Sub ping Makro bezieht sich auf A1 und läuft 10.000 mal dann hört es auf wenn auf A1 keine 1 kommt, ich kann dir morgen mal das Sub Ping schicken

0

Die Formel in A (in meinem Falle jetzt A65 lautet =WENN(UND(H65=1;U65=0;V65=0;DA65=0;DB65=0;FF65=FP65;FH65=6;FW65=0);1;0)
Das Makro Sub ping lautet
Sub ping 
i = 1
While Cells(65, 1).Value < > 1 '
Cells (10000, 1). Value = Int (( 49 * Rnd) + 1) '
If i > 10000 Then Exit Sub '
i = i + 1
Wend 
MsgBox (i) '
End Sub

0

Das Sub ping Makro habe ich mal für einen Zahlen Generator bekommen, der Zufallszahlen von 1-49 in bestimmten Zellen mit bestimmten Formeln mit dem Ping zum laufen brachte ich habe das einfach übernommen, ich denke dass das Rnd 49 und die Zelle A10000 da garnicht mit rein gehören, vielleicht kann man das ja da jetzt für den anderen Zweck entfernen

0
@Marceloblau01

wenn weiterhin über normale Formeln Zufallszahlen erzeugt werden ist die Funktion mit dem rnd notwendig. Durch die damit eingetragene Zahl werden die Zufallszahlen durch die Formeln neu erzeugt. Das könnte man vermutlich auch komplett ins Makro übernehmen, wenn Du aber bisher damit klar kommst, kann es so bleiben. Die Zeile im Makro kann man vereinfachen, da es nur irgendeine Änderung sein soll, keine näher bestimmte Zufallszahl

So wird der Ablauf immer 10000 x durchlaufen. Es werden beim Wert 1 in A1 die Werte B1:G1 kopiert und ab Spalte I eingefügt

Sub ping()
k = 1 'Zeile für das erste Ergebnis
For i = 1 To 10000
Cells(12000, 1).Value = Rnd 'ist notwendig um die Zufallswerte durch die Formeln zu erneuern
If Cells(1, 1).Value = 1 Then
Range("B1:G1").Copy
Range("I" & k).PasteSpecial (xlValues)
k = k + 1
End If
Next
MsgBox (i)
End Sub
0

Danke, ich werde es gleich mal probieren!

0

Fehlermeldung bei End If

0
@Marceloblau01

hast Du noch was geändert bzw. was (dein Spaltenaufbau ist ja sicherlich anders)? bei mir läuft es ohne Fehler

0

Das geht irgendwie garnicht,
Ich beschreibe noch mal kurz was ich mache wenn ich es manuell mache
Ich drücke auf den Start Button um den Sub ping zum laufen zu bringen
dann laufen die Rechenaufgaben in B:G
Ich könnte auch die Entfernen-Taste drücken da bräuchte ich den Sub ping nicht, aber so geht's schneller.

kommt in A die 1 hält er an.
dann kopiere ich B:G
und füge die Werte in I:N ein,
dann starte ich wieder
Die Ergebnisse kommen immer nur in B1:G1
In I :N wird die Liste hingegen immer länger
sprich , bis I400 :N400 bin ich mal gekommen dann hatte ich keinen Bock mehr

0
@Marceloblau01

dann passiert im Makro aber schon das, was Du sonst von Hand gemacht hast.

In der anderen Antwort hast Du allerdings geschrieben, dass die Formeln nun in Zeile 65 stehen, also A65 abgefragt wird. Das habe ich in der angepassten Form nicht so drin stehen, da wird A1 abgefragt und B1:G1 kopiert.

Kommt eine Fehlermeldung wenn das Makro läuft? ggf. mit F8 zeile für zeile durchgehen, dann siehst Du bei welchem Befehl der Fehler kommt

0

Ich habe die Tabelle so gebaut wie dein Sub Ping aber er will das End If nicht

0
@Marceloblau01

hast Du die Zeilenumbrüche auch so?  Bei der Zeile mit IF darf nach dem then nichts mehr stehen. Sonst kommt in der Tat die Meldung "End if ohne if"

0

Jetzt gehts aber das End If musste ich entfernen

0

Ha jetzt klappt es wunderbar, viiiiiielen Dank
Du bist der größte!!!!

0

@Ninombre ich hätte noch mal eine Frage zu dem Makro!
Ich würde das Makro gern noch wie folgt erweitern wenn das geht!
Ich könnte ja mit dem Ping auch zB 10 verschiedene Zufallsgeneratoren gleichzeitig laufen lassen und wenn ich jedem 10 Zeilen zum rauskopieren der Zahlenreihen zur Verfügung stellen würde. In meiner Ausdrucksweise würde das heißen, wir haben derzeit A1 =1 dann kopie B1:G1 und ab I1 einfügen , Begrenzung jetzt I10
Dann A11=1 Kopie B11:G11 und ab I11 einfügen
usw
wäre das machbar?
Gruß Uwe

0

ungeprüft:

  • Sub Ping()
  • Dim c
  • for each c in Range("A1:A10000")
  • if c = 1 then Range(c.offset(0, 1) & ":" & c.offset(0, 6)): c.offset(0, 8).pastespecial (xlvalues)
  • next c
  • end sub

Wird allerdings eine Weile dauern!

nach den zwei schließenden Klammern und vor dem : (Zeilentrennzeichen) muss noch ein .copy rein, also:

  • Sub Ping()
  • Dim c
  • for each c in Range("A1:A10000")
  • if c = 1 then Range(c.offset(0, 1) & ":" & c.offset(0, 6)).copy: c.offset(0, 8).pastespecial (xlvalues)
  • next c
  • end sub


0

ich bin wegen dem A1:A10.000 etwas verwirrt, vielleicht hast du was falsch verstanden, die Werte in B1:G:1 werden immer nur an dieser Position ermittelt also 1 (wahr) steht immer nur $A$1 die Ergebnisse stehen dann in $I1:$Nxxxx
das Sub ping soll erst nach 10.000 Versuchen aufhören, die Anzahl der möglichen Ergebnisse ist ja am Anfang noch nicht bekannt.

0
@Marceloblau01

ja, das hab ich so verstanden. Um das zu korrigieren, müsste ich Deine Formel in A1 kennen, da ich nach dieser Formel die Auswertung per Makro machen muss.

Oder: die Formel in A1 ist kopierbar/-zu machen/ (geht per Makro auch absolut), dann geht es so wie im Makro geplant und nach Prüfung wird die Formel wieder gelöscht. Ist Spalte A frei bzw frei zu machen? Oder könnte das Makro eine neue Spalte einfügen und nach Durchlauf wieder löschen? (Offset würde sich um jeweils 1 erhöhen, sonst nichts!)

Es gibt eine Menge Optionen, sowas zu machen, aber auch eine Menge Fallstricke, wenn man nichts genaues weiß!!

0

Es gibt in A1 eine =wenn(und(..........);dann1;sonst"") Formel diese bezieht sich auf andere Zellen mit wiederum wenn(und Formeln
Das ist ein wenig kompliziert weil diese Ergebnisse in B1:G1 auf mehrere Kriterien hin überprüft werden

0

Diese Formeln in B1:G1 werden durch ein Ping (Entfernen-Taste) dazu angeregt neu zu rechnen und dann werden die Ergebnisse zueinander überprüft , passen sie zusammen gibt's ein ok sozusagen, es können aber viele Ergebnisse zueinander passen und ich hätte sie gerne alle in einer Tabelle also in I1:Nxxx

0
@Marceloblau01

vermutlich hilft mir das noch nicht weiter bei einer Konzepterstellung, ich werde mich aber heute abend nochmal reinvertiefen.

Vllt kannst aber auch Du aus dem jetzigen konzept schon was verwerten

0

Die Formel in A (in meinem Falle jetzt A65 lautet =WENN(UND(H65=1;U65=0;V65=0;DA65=0;DB65=0;FF65=FP65;FH65=6;FW65=0);1;0)

Das Makro Sub ping lautet

Sub ping
i = 1
While Cells(65, 1).Value < > 1 '
Cells (10000, 1). Value = Int (( 49 * Rnd) + 1) '
If i > 10000 Then Exit Sub '
i = i + 1
Wend
MsgBox (i) '
End Sub

0

Das Sub ping Makro habe ich mal für einen Zahlen Generator bekommen, der Zufallszahlen von 1-49 in bestimmten Zellen mit bestimmten Formeln mit dem Ping zum laufen brachte ich habe das einfach übernommen, ich denke dass das Rnd 49 und die Zelle A10000 da garnicht mit rein gehören, vielleicht kann man das ja da jetzt für den anderen Zweck entfernen

0
@Marceloblau01

Komme heute nicht mehr dazu, das auszuarbeiten, morgen auch nicht.

Aber: ist es Dein Ziel, Dich in Makros anhand dieses Beispiels weiterzubilden, oder bist Du an einer SCHNELLEN (Formel-)Lösung interessiert?

Ein Makro würde nämlich ziemlich lang laufen, bis es die 1000 Zeilen à 6 Spalten durchgenudelt hat.

Eine Matrixformel macht das in einer Sekunde. Hab mich heute nur ziemlich lang bei der Fehlersuche aufgehalten und habe jetzt keine Konzentration mehr dafür.

Das Kopieren: soll das immer nach Zeile 1 (oder jedenfalls an einen fixen Ort)l, weil sowieso nur ein Treffer von Bedeutung ist, oder willszt Du viele Treffer listen (auch mit Zeile, wo, das muss ohnehin per Formel errechnet werden)

Formeln haben den zusätzlichenj Vorteil, dass sie zB von Libre Office gelesen werden können (Makros nicht) und dass andere -ungeübte- User nicht verschreckt werden vor lauter Warnginweisen über die Bedenklichkeiten von Makros.

Die Formel hab ich im Modell fertig, das muss ich jetzt allerdings erweitern von 3 auf 6 Spalten und von 9 auf 999 Zeilen

0
@Iamiam

Jetzt habe ich doch mal zwischendurch kurz Zeit gefunden und schlage Dir erst mal eine Formel(Zeile65) mit Hilfsspalte vor:

=H65&U65&V65&DA65&DB65&(FF65=FP65)&FH65&FW65

die muss 10000WAHR60 ergeben, wenn alles mit Deinen Angaben übereinstimmt.

und eine Zelle, benannt Zeile mit

=Vergleich(10000WAHR60;Hilfsspalte;0)

Die zugehörigen Werte erhältst Du mit

=index(B:B;Zeile), das ist nach rechts kopierbar; das ZEILE brauchst Du nicht absolut setzen, das macht xl mit benannten Bereichen automatisch.

Zum Festschreiben musst Du es allerdings zu WERT umsetzen, das geht in diesem Fall nur manuell übers Kontextmenü (Formeln eine Zeile tiefer hinterlegen!)

Muss jetzt wieder weg, für eine Matrixformel oder ein Makro melde Dich nochmal

0

Was möchtest Du wissen?