Thema
|
Datum
|
Von Nutzer
|
Rating
|
Antwort
|
|
29.09.2017 00:35:04 |
Radler |
|
|
|
29.09.2017 16:19:09 |
Mackie |
|
|
|
29.09.2017 21:58:57 |
Radler |
|
|
|
29.09.2017 22:06:43 |
Mackie |
|
|
|
01.10.2017 17:04:27 |
Gast9419 |
|
|
|
01.10.2017 18:36:30 |
Radler |
|
|
|
01.10.2017 23:06:32 |
Ben |
|
|
|
02.10.2017 03:08:24 |
Radler |
|
|
|
02.10.2017 09:52:02 |
Gast93350 |
|
|
|
02.10.2017 12:50:01 |
Radler. |
|
|
Aufgabe mit VBA lösen |
02.10.2017 15:35:57 |
Gast54592 |
|
|
|
03.10.2017 06:52:49 |
Radler |
|
|
|
03.10.2017 15:35:51 |
Gast94472 |
|
|
|
03.10.2017 21:47:29 |
Radler |
|
|
|
04.10.2017 10:35:52 |
Radler |
|
|
|
06.10.2017 14:58:20 |
Gast38955 |
|
|
|
06.10.2017 21:32:15 |
Radler |
|
|
|
08.10.2017 15:44:57 |
Gast58396 |
|
|
|
08.10.2017 20:10:13 |
Radler |
|
|
|
09.10.2017 09:38:56 |
Gast65905 |
|
|
|
09.10.2017 14:59:02 |
Radler |
|
|
|
11.10.2017 16:06:12 |
Gast22845 |
|
|
|
12.10.2017 07:47:21 |
Radler |
|
|
|
12.10.2017 18:56:09 |
Gast73494 |
|
|
Von:
Gast54592 |
Datum:
02.10.2017 15:35:57 |
Views:
637 |
Rating:
|
Antwort:
|
Thema:
Aufgabe mit VBA lösen |
Moin!
Also die Sub kann man problemlos umbenennen. Was du nicht umbenennen kannst ist zielmatrix. Das ist aber auch keine Sub sondern eine Variable (hier ein Array). Habe es eben nochmal getestet.
Das flexible würde gehen (aber erst morgen), wie soll dann aber die Summenzeile erfasst werden? Jeden Wert eingeben lassen?
Noch schnell eine Erklärung. Der Code versucht die Zahlen von unten rechts beginnend ab der größten Zahl in die Matrix einzutragen. Dabei werden immer in den Zellen geprüft, ob der Wert da rein passt (drum herum keine Zahl, in die Summe der Spalte passt es auch noch). Sollte das klappen wird die Zahl eingetragen (bei zweistelligen Zahlen erfolgt die Prüfung auf beide Zahlen und auch auf deren Eintrag). Klappt es nicht kommt ein x an die Stelle und die nächste Stelle wird geprüft. Ist die Zahl eingetragen, wird probiert die nächste Zahl einzutragen. Dabei sucht sich der Code den letzten Eintrag (könnte man auch übergeben, wird der Code noch schneller) und probiert ab da. So setzt sich alles fort. Wird ein Wert nicht gefunden, wird in den bisherigen Eintragungen zurückgegangen bis die letzte Zahl kommt. Diese wird aus der matrix rausgelöscht und die Felder, in denen die Zahl stand, als probiert markiert (mit einem x). Danach wird erneut mit der gelöschten Zahl ab der Stelle danach probiert. Das Ganze geht so lange, bis alle Zahlen drin sind oder nichts passendes gefunden wird.
Du kannst mal vor die Codezeile next zahl das hier einfügen
ActiveSheet.Range("B1:L11") = zielmatrix
Dann dort einen Haltepunkt setzen und sowohl Excel als auch den VBE parallel öffnen. Dann den Code ausführen. Der Code hält dann an der Zeile an. Damit kannst du dir den aktuellen Aufbau der Matrix im Blatt anschauen. Dann F5 drücken und das Ergebnis nach dem nächsten Durchlauf anschauen. Usw. Damit wird evtl. die Vorgehensweise klarer. Irgendwann das aber wieder rausnehmen. Für das Ergebnis hat der Code ca. 140000 Schleifen gebraucht - Dauer zwischen 10 Sekunden (neuer Rechner) und 15 Sekunden (alter Rechner).
Wie gesagt Codeänderung kommt morgen. Falls der Code noch nicht klar ist, einfach nochmal fragen. Fragen kostet ja bekanntlich nix.
VG
|
- Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
- Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
- Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
- Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
- Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei
Antworten auf Ihren Beitrag zu benachrichtigen
Bitte geben Sie ein aussagekräftiges Thema an.
Bitte geben Sie eine gültige Email Adresse ein!
- Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
- Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
- Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
- Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
- Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei
Antworten auf Ihren Beitrag zu benachrichtigen
Thema
|
Datum
|
Von Nutzer
|
Rating
|
Antwort
|
|
29.09.2017 00:35:04 |
Radler |
|
|
|
29.09.2017 16:19:09 |
Mackie |
|
|
|
29.09.2017 21:58:57 |
Radler |
|
|
|
29.09.2017 22:06:43 |
Mackie |
|
|
|
01.10.2017 17:04:27 |
Gast9419 |
|
|
|
01.10.2017 18:36:30 |
Radler |
|
|
|
01.10.2017 23:06:32 |
Ben |
|
|
|
02.10.2017 03:08:24 |
Radler |
|
|
|
02.10.2017 09:52:02 |
Gast93350 |
|
|
|
02.10.2017 12:50:01 |
Radler. |
|
|
Aufgabe mit VBA lösen |
02.10.2017 15:35:57 |
Gast54592 |
|
|
|
03.10.2017 06:52:49 |
Radler |
|
|
|
03.10.2017 15:35:51 |
Gast94472 |
|
|
|
03.10.2017 21:47:29 |
Radler |
|
|
|
04.10.2017 10:35:52 |
Radler |
|
|
|
06.10.2017 14:58:20 |
Gast38955 |
|
|
|
06.10.2017 21:32:15 |
Radler |
|
|
|
08.10.2017 15:44:57 |
Gast58396 |
|
|
|
08.10.2017 20:10:13 |
Radler |
|
|
|
09.10.2017 09:38:56 |
Gast65905 |
|
|
|
09.10.2017 14:59:02 |
Radler |
|
|
|
11.10.2017 16:06:12 |
Gast22845 |
|
|
|
12.10.2017 07:47:21 |
Radler |
|
|
|
12.10.2017 18:56:09 |
Gast73494 |
|
|