Jump to content

Recommended Posts

Beitrag wurde in Thread hier hin verschoben

Damit behalten wir den Überblick und haben die Excel-Themen schön geordnet.

Letzter Absatz wurde aus Gründen der Lesbarkeit nicht gelöscht:

So, das war's fürs erste. Noch ein Hinweis: Ich weiß, dass das Ganze stellenweise nicht einfach zu verstehen ist. Aber Programmieren ist mehr, als ein paar Formeln zu kennen. Eine Programmiersprache ist nur Hilfsmittel zur Umsetzung von Ideen. Die Erstellung eines Konzeptes für die Umsetzung einer Idee ist wesentlich schwieriger als das Erlernen der reinen Syntax einer Programmiersprache. Einfach ausgedrückt, wenn man die deutsche Sprache beherrscht kann man sich zwar in eine Vorlesung eines 10. Semesters Philosophie setzen, verstehen und umsetzen wird man aber vom dem Gehörten nur wenig. Genauso ist es mit dem Programmieren

bearbeitet von David Cooper
Link zu diesem Kommentar
Auf anderen Seiten teilen

hallo Chi Lu Jung!

deine frage reizt mich und ich möchte das problem lösen. aber ich frag mich auch ob das hier wen interessiert, da dieser (andere) thread ja besonders auch den sinn hat anfängliche hilfestellung zu geben (fortgeschrittenenthread oder privat um die übersicht zu bewahren?). dienstag geh ich dran.

@all,

bei figurenauswertungen mach ich es mir einfacher (weniger zeichen, excel schneller). ich verwende immer für alles ziffern. die alyettsche figur 1 finde ich mit der formel (wenn sie auf schwarz gesucht wird und schwarz in spalte "B" ist:

=wenn(B3+B4+B5+B6=4;1;0)

die "1" steht in der formel dafür, das wenn die formel sie ausgiebt die figur "1" entstanden ist, also 4x schwarz in spalte "B" von zeile "3" bis zeile "6".

ansonsten sehe ich durch eure beispiele formeln die mir die "hilfe" nicht erklären konnte, die ich erst an euren beispielen verstehen kann. bringt mir richtig was!

grüße matthias s.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo matthias,

du hast natürlich recht, dass ich dafür einen eigenen Thread aufmachen sollte. Gesagt - getan. daher in diesem Thread hier verschoben. Damit haben wir die Sache schön geordnet.

Ich freue mich, dass du das Problem lösen willst. Bin schon auf deine Lösung gespannt!!! :lol:

bearbeitet von David Cooper
Link zu diesem Kommentar
Auf anderen Seiten teilen

A B C D E F G H

1 Coups Dutz 1. Dutz 2. Dutz 3. Dutz 10 Cp Favo G/V

2 0 0 0 0 0 0

3 3 1 1 0 0 1

4 14 2 1 1 0 2

5 9 1 2 1 0 3

6 16 2 2 2 0 4

7 31 3 2 2 1 5

8 8 2 2 3 1 6

9 13 2 2 4 1 7

10 12 2 2 5 1 8

11 12 1 3 5 1 9

12 20 2 3 6 1 10 2

13 1 1 1 0 0 1 2 -1

14 0 0 1 0 0 1 2 -1

15 14 2 1 1 0 2 2

16 16 2 1 2 0 3

17 25 3 1 2 1 4

18 26 3 1 2 2 5

19 28 3 1 2 3 6

20 8 1 2 2 3 7

21 11 1 3 2 3 8

22 31 3 3 2 4 9

23 10 1 4 2 4 10 1

24 18 2 0 1 0 1 1 -1

25 11 1 1 1 0 2 1 2

26 22 2 1 2 0 3

So, dann legen wir mal los.

Spalte A - Coups

In der Spalte A steht die Permanenz. Start in Zeile 2.

Spalte B - Dutz

Als erstes wird das Dutzend ermittelt und in Spalte B eingetragen. Die Formel hierfür lautet:


=WENN(ISTZAHL(A2);WENN(A2=0;0;GANZZAHL((A2 -1) / 12)+1);"")

Die Abfrage "Wenn(Istzahl(A2);;"")" bewirkt, dass nur dann die Berechnung ausgeführt wird, wenn wir auch wirklich eine Zahl in A2 steht. Ansonsten wird die Zelle leer gelassen (""). Ich benutze diese Abfrage in JEDER Formel, damit verhindere ich, dass es zu Fehlern kommt, falls keine Permanenzzahl vorliegt (z.B. Division durch Null). Ist deshalb notwendig, da ja die Originalpermanenzen unterschiedliche Anzahl von Coups haben (zwischen 200 und 400).

Die Bedingung "Wenn(A2=0;0;GANZZAHL((A2 -1) / 12)+1)" dient zur Ermittlung des Dutzends. Wenn Coup = 0, dann eine 0 in Zelle B2 einstellen. Die Berechnung ist auch ganz einfach, von der Permanenzzahl wird eins abgezogen und dann durch 12 geteilt. Die daraus ermittelte Dezimalzahl wird durch die Funktion "Ganzzahl" aufgerundet und dann eine 1 dazugezählt. Man könnte das Dutzend auch durch zwei WENN-Funktionen ermitteln, ist mir aber zu trivial.

Spalte C - 1. Dutz

In dieser Spalte wird gezählt, wie oft das 1. Dutzend von Zeile zu Zeile erscheint.


=WENN(ISTZAHL(B2);WENN(B2=1;1;0))

Die Formel ist ganz einfach, wenn B2=1 dann wird das erste Dutzend gezählt, also 1, ansonsten 0. diese Formel gilt nur für die erste Zeile (also B2), ab der zweiten Zeile müssen wir diese Formel etwas erweitern.


=WENN(ISTZAHL(B3);WENN(F2=10;WENN(B3=1;1;0);WENN(B3=1;C2+1;C2));"")

Die Bedingung "Wenn(F2=10;;)" fragt einfach ab, ob schon 10 Coups ohne Zero gezählt wurden. Hierbei bitte beachten, dass wir in Spalte C3 die Zelle F2 (also vorhergehende Zeile) abfragen!!! Die Formel für Spalte F siehe weiter unten. Wenn schon 10 Coups ermittelt wurde, dann greift die Bedingung


WENN(B3=1;1;0)

Also hier wird wieder von vorne gezählt, da wir ja nur den Favoriten aus den letzten 10 Coups ohne Zero berücksichtigen wollen. Somit bei 1. Dutzend wieder eine 1 einstellen, ansonst Rücksetzen auf 0.


WENN(B3=1;C2+1;C2)

Diese Bedingung wird aktiviert, wenn wir noch keine 10 Coups gezählt haben. Wenn in B3 das erste Dutzend steht, dann werden die bisher gezählten 1. Dutzende aus der Zelle C2 um 1 erhöht. Wenn nicht, dann einfach Übertrag des Wertes aus C2. Somit steht in C3 die Anzahl der bisher ermittelten 1. Dutzende. Damit wird in der Spalte C fortlaufend die Anzahl der 1. Dutzende angezeigt bis insgesamt 10 Coups ohne Zero ausgewertet wurden. Dann wieder Start bei 0.

Spalte D - 2. Dutz

Analog zur Spalte C wird hier der Zähler für das 2. Dutzend berechnet.

Also erste Zeile (Zelle D2):


=WENN(ISTZAHL(B2);WENN(B2=2;1;0))

Ab der zweiten Zeile (Zelle D3 folgende) die Formel:


=WENN(ISTZAHL(B3);WENN(F2=10;WENN(B3=2;1;0);WENN(B3=2;D2+1;D2));"")

Spalte E - 3. Dutz

Analog zur Spalte C wird hier der Zähler für das 3. Dutzend berechnet.

Also erste Zeile (Zelle E2):


=WENN(ISTZAHL(B2);WENN(B2=3;1;0))

Ab der zweiten Zeile (Zelle E3 folgende) die Formel:


=WENN(ISTZAHL(B3);WENN(F2=10;WENN(B3=3;1;0);WENN(B3=3;E2+1;E2));"")

Spalte F - 10 Cp

Hier wird die Summe der bisher gezählten Dutzende berechnet. Dadurch schließen wir auch gleich die Zero aus, da wir ja nur das 1., 2. und 3. Dutzend zählen. Die Formel hierfür ist ganz einfach:


=WENN(ISTZAHL(B2);SUMME(C2:E2);"")

Also durch die Funktion "Summe(C2:E2)" werden die Zahlen aus den Zellen C2, D2 und E2 addiert. Durch die Abfrage "WENN(F2=10;..." in C3, D3 und E3 setzen wir die Zählerstände in diesen Spalten bei 10 ermittelten Dutzende wieder zurück.

Spalte G - Favo

Jetzt kommen wir zum Punkt. In dieser Spalte wird das Satzsignal ermittelt. Auf welchen Favoriten muss ich wie oft setzen. Die Formel wird erst AB ZEILE 4 eingestellt, da wir die letzten drei Zeilen für das Satzsignal berücksichtigen müssen.


=WENN(ISTZAHL(F4);WENN(F4=10;VERGLEICH(MAX(C4:E4);C4:E4;0);WENN(UND(ISTZAHL(G3);ZÄHLENWENN(G1:G3;">0")<=2);G3;""));"")

Wenn wir also 10 Dutzende durch die Bedingung "Wenn(F4=10;..." gezählt haben, dann wird das Dutzend mit dem Maximum (also der Favorit) ermittelt. Durch die Funktion "Max(C4:E4)" wird aus den Zellen C4, D4 und E4 das Maximum ermittelt. Wenn wir uns mal in der Beispieltabelle die Zeile 12 anschauen, dann haben wir 3, 6 und 1 als Dutzendzähler. Hier ist das Maximum 6 für das 2. Dutzend. Somit ist der Favorit das 2. Dutzend. Durch die Funktion "Vergleich(Max(C4:E4);C4:E4;0)" ermitteln wir die Position des Maximums in den Zellen C4, D4, E4. Diese Zellen stellen für die Funktion Vergleich eine Matrix dar, wobei die erste Zelle (C4) die Position 1, die zweite Zelle (D4) die Position 2 und die dritte Zelle (E4) die Position 3 hat. In unserem Beispiel ermitteln wir also die Position der Zahl 6 in den Zellen C12, D12 und E12. Da die Zahl 6 in D12 steht erhalten wir die Position 2. Diese Zahl können wir gleich als Dutzend interpretieren, da die Reihenfolge der Dutzende mit den Position in der Matrix übereinstimmen. Somit haben wir also unseren Favoriten - das 2. Dutzend - gefunden. Aber leider nur für den ersten Satz. Wir wollen aber dreimal setzen. Hierfür wird der Falsch-Teil der Bedingung "Wenn(F4=10;;)" verwendet:

Die Bedingung "Wenn(Istzahl(g3);g3;"") würde erst einmal ermöglichen, dass wir nach Ermittlung des Favoriten in der vorhergehenden Zeile wieder ein Satzsignal haben (da der Wert aus G3 in die Zelle G4 übertragen würde) und setzen könnten. Aber leider würde dann ab dem ersten Favoriten immer dieser Favorit gesetzt werden. Um dies zu vermeiden, müssen wir also nach dreimal Setzen aufhören. Dies geschieht durch die Erweiterung der Bedingung "WENN(UND(ISTZAHL(G3);ZÄHLENWENN(G1:G3;">0")<=2);G3;"")" - damit werden die Satzsignale in den letzten drei Zeilen gezählt. Wenn also in den vorhergehenden drei Zellen G1 bis G3 eine Zahl größer als 0 (somit der Dutzend Favorit von 1 bis 3) steht, dann brauche wir nicht mehr zu setzen, da wir schon dreimal gesetzt haben. Wenn aber nur einmal oder zweimal (<=2) gesetzt wurde, dann können wir noch mal setzen.

Spalte H - G/V

In dieser Spalte wird der Gewinn- / Verlust für unser dreimaliges Setzen auf den Favoriten errechnet. Achtung, Formel erst ab 2. Zeile (also H3) einsetzen.


=WENN(UND(ISTZAHL(A3);ISTZAHL(G2);H2<>2;H1<>2);WENN(G2=B3;2;-1);"")

Wenn wir einen Favoriten in der Spalte G der vorhergehenden Zeile ermittelt haben, so setzen wir diesen. Dies wird durch die Bedingung "Istzahl(G2)" ermittelt. Gesetzt wird nicht, wenn bereits ein Gewinn eingetreten ist, also wenn in der vorhergehenden Zeile H2 bzw. zwei Zeilen vorher in H1 ein Gewinn - dargestellt durch die 2 - ausgewiesen wurde. Zur Ermittlung des Gewinnes wird einfach der Favorit aus der vorhergehenden Zeile (G2) mit dem aktuellen Dutzend (B3) verglichen. Wenn gleich, dann wird ein Gewinn von 2 Stücke eingestellt, ansonsten ein Verlust von -1.

So, das war's fürs erste. Noch ein Hinweis: Ich weiß, dass das Ganze stellenweise nicht einfach zu verstehen ist. Aber Programmieren ist mehr, als ein paar Formeln zu kennen. Eine Programmiersprache ist nur Hilfsmittel zur Umsetzung von Ideen. Die Erstellung eines Konzeptes für die Umsetzung einer Idee ist wesentlich schwieriger als das Erlernen der reinen Syntax einer Programmiersprache. Einfach ausgedrückt, wenn man die deutsche Sprache beherrscht kann man sich zwar in eine Vorlesung eines 10. Semesters Philosophie setzen, verstehen und umsetzen wird man aber vom dem Gehörten nur wenig. Genauso ist es mit dem Programmieren!

Bitte diesen Hinweis als Ansporn verstehen und nicht als unberechtigte Zweifel an euren Fähigkeiten und Ausdauer. :lol:

PS: Danke an matthias s., der mich auf einen Fehler in der Spalte H (Bedingung H1<>2 fehlte) hingewiesen hat.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Für alle Interessierte würde ich vorschlagen, wir gehen mal einen Schritt weiter.

Wer kann mir eine Lösung vorschlagen, um bei Gleichstand von zwei Dutzende nach 10 Coups nicht gleich zu setzen, sondern erst einmal weiter zu zählen, bis sich ein eindeutiger Favorit zeigt? Also in welcher Spalte muss ich welche Formel wie ändern, damit bei einem nicht eindeutigen Favoriten weitergezählt wird. Oder muss ich sogar mehrere Formeln ändern?

Noch ein Tipp, am schnellsten und übersichtlichsten geht es, wenn wir eine neue Spalte mit JA/NEIN für den Fall einführen, dass es einen eindeutigen Favoriten gibt (JA) bzw. dass es keinen eindeutigen Favoriten gibt (NEIN).

Ich werde in einigen Tagen eine Lösung posten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich ich ich

wir machen eine weitere Spalte, die da Heißt Satzsignal

mit folgender Formulage (Vorsicht Holzhammer Programmierung !!!)

=WENN(UND(H2>0;H2<4);WENN(UND(H2=1;D2-10>=E2;D2-10>=F2);"JA";WENN(UND(H2=2;E2-10>=D2;E2-10>=F2);"JA";WENN(UND(H2=3;F2-10>=D2;F2-10>=E2);"JA";"NEIN")));"NEIN")

Es erscheint ein Ja, wenn es einen Favoriten gibt, der 10 größer ist als die anderen beiden. Ansonsten erscheint ein "NEIN"

mfg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo matthias,

danke für deinen Lösungverschlag. Ich fürchte, ich habe mich nicht klar ausgedrückt. Was ich suche, ist ein eindeutiger Favorit, nicht einer, der 10 größer ist als die anderen.

Z.b. siehst du in der Beispieltabelle in Zeile 23 die Zähler 4/2/4, damit ergibt sich kein eindeutiger Favorit. Wir müßten nun solange weiterzählen, bis sich ein eindeutiger Favorit zeigt (also einer der Zähler 5 erreicht) hat.

Nun zu deiner Lösung. Ich vermute mal, du hast die Spalte H (G/V) mit Spalte G (Favo) verwechselt.

Die Abfrage "UND(H2>0;H2<4);" kann man eleganter durch die Abfrage "Istzahl(G2)" ersetzen. Da in der Spalte G ja nur dann eine Zahl steht, wenn wir einen Favoriten gefunden haben (1 bis 3).

Ansonsten noch ein Tipp: Durch die Einführung einer Spalte "Eindeutiger Favorit" haben wir die Möglichkeit, die Spalte G (Favo) einfach anzupassen. Man beachte auch, welche Auswirkungen eine Änderung in Spalte G auf die Spalten D bis F haben!

Link zu diesem Kommentar
Auf anderen Seiten teilen

hallo Chi Lu Jung!

vielleicht kommst du jetzt ein bisschen durcheinander wg matthias 2x, ich dachte besser ordnug halten und neuen thread [matthias s.]. :)

ich komme grad von der arbeit und bin oberabgenervt :) und will heut nix mehr am rechner machen :) , lieber vor der glotze abstumpfen. unsere nächste gelegenheit morgen abend ab 8. hoffe verstehst es...

grüße matthias s. :lol::lol::lol:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo matthias s.,

vielleicht kommst du jetzt ein bisschen durcheinander wg matthias 2x, ich dachte besser ordnug halten und neuen thread [matthias s.].

Hmm, verstehe ich nicht ganz. In diesem Thread habe ich mich bisher nur mit mathias ohne s. unterhalten. Den neune Thread habe ich auch aufgemacht.

ich komme grad von der arbeit und bin oberabgenervt und will heut nix mehr am rechner machen , lieber vor der glotze abstumpfen. unsere nächste gelegenheit morgen abend ab 8. hoffe verstehst es...

Kein Problem, wenn ich dich richtig verstehe, willst du ebenfalls einen Lösungsverschlag unterbreiten. Ich freue mich darauf.

Hallo mathias (ohne s.),

deine Antwort war richtig, nur die Frage war falsch :lol:

Es ist schon richtig, das in G der Favorit steht, für den Fall, dass wir keinen eindeutigen Favoriten suchen. Die Aufgabenstellung ist aber, nun einen eindeutigen Favoriten zu suchen, somit muss die Formel in Spalte G angepasst werden (unter anderem).

Link zu diesem Kommentar
Auf anderen Seiten teilen

hallo chi lu jung!

bist du doch durcheinander gekommen, das war von mir:

"""hallo Chi Lu Jung!

deine frage reizt mich und ich möchte das problem lösen. aber ich frag mich auch ob das

hier wen interessiert, da dieser thread ja besonders auch den sinn hat anfängliche

hilfestellung zu geben (fortgeschrittenenthread oder privat um die übersicht zu

bewahren?). dienstag geh ich dran."""

na ja- heut ist mittwoch- aber ich hab eine variante. diese läuft nicht über eine extraspalte

(JA/NEIN). der grund ist ein entstehender zellbezug, dann wollte ich es nicht weiter so

probieren. ich habe deine bestehenden formeln geändert mit der funktion

WENN(UND(F2>9;KGRÖSSTE(C2:E2;1)<>KGRÖSSTE(C2:E2;2))

F2>9 gibt die möglichkeit über 10 hinaus zählen zu können bis die zwei besten dutzende

nicht mehr gleich oft erschienen sind.

KGRÖSSTE (KKLEINSTE) sucht in einem angegebenen bereich (C2:E2) nach dem größten

(kleinsten) wert.

hinter dem bereich habe ich einmal eine ";1" und das andere mal die ";2" eingegeben. im

ersteren fall wird nach dem grössten "ersten" wert gesucht, im zweiten fall nach den

"zweit"-grösstem wert. ich vergleiche also den grössten wert mit dem nächsten wert der

gleich oder kleiner sein kann, vom grössten wert ausgehend. sind beide gleich wird die

funktion nicht ausgeführt. hier die geänderten formeln:

deine formel in "C3":

=WENN(ISTZAHL(B3);WENN(F2=10;WENN(B3=1;1;0);WENN(B3=1;C2+1;C2));"")

geändert in:

=WENN(ISTZAHL(B3);WENN(UND(F2>9;KGRÖSSTE(C2:E2;1)<>KGRÖSSTE(C2:E2;2));WENN(B3=1;1;0);WENN(B3=1;C2+1;C2));"")

deine formel in "D3":

=WENN(ISTZAHL(B3);WENN(F2=10;WENN(B3=2;1;0);WENN(B3=2;D2+1;D2));"")

geändert in:

=WENN(ISTZAHL(B3);WENN(UND(F2>9;KGRÖSSTE(C2:E2;1)<>KGRÖSSTE(C2:E2;2));WENN(B3=2;1;0);WENN(B3=2;D2+1;D2));"")

deine formel in"E3":

=WENN(ISTZAHL(B3);WENN(F2=10;WENN(B3=3;1;0);WENN(B3=3;E2+1;E2));"")

geändert in:

=WENN(ISTZAHL(B3);WENN(UND(F2>9;KGRÖSSTE(C2:E2;1)<>KGRÖSSTE(C2:E2;2));WENN(B3=3;1;0);WENN(B3=3;E2+1;E2));"")

zusätzlich musste noch die formel ab "G4" abwärts gleichwertig geändert werden,

es würde sonst trotzdem ein satz getätigt werden obwohl zwei dutzende gleich sind.

deine formel in "G4":

=WENN(ISTZAHL(F4);WENN(F4=10;VERGLEICH(MAX(C4:E4);C4:E4;0);WENN(UND(ISTZAHL(G3);ZÄHLENWENN(G1:G3;">0")<=2);G3;""));"")

geändert in:

=WENN(ISTZAHL(F4);WENN(UND(F4>9;KGRÖSSTE(C4:E4;1)<>KGRÖSSTE(C4:E4;2));VERGLEICH(MAX(C4:E4);C4:E4;0);

WENN(UND(ISTZAHL(G3);ZÄHLENWENN(G1:G3;">0")<=2);G3;""));"")

im grunde wurde jedesmal immer nur WENN(F2=10; ausgetauscht durch

WENN(UND(F2>9;KGRÖSSTE(C2:E2;1)<>KGRÖSSTE(C2:E2;2));

es wird also die anzahl des erscheines des erstbesten dutzends mit dem zweitbesten

dutzend verglichen. bei gleichheit wird das dutzend welches sich am weitesten links

befindet als erstbestes gerechnet, da wir von rechts nach links prüfen. ist die anzahl gleich

werden die dutzende nicht null gesetzt sondern es wird so lange weitergezählt, bis ein

unterschied vorhanden ist. erst ab da wird auch gesetzt.

jetzt bin ich natürlich gespannt Chi Lu Jung, ob ich auch wirklich das gemacht habe was du

meintest, aber ich denke schon. manchmal verlier ich mich im eifer des gefechts.

einen fehler gibt es aber noch, wenn ich im ersten setzer gleich gewinne, dann setzt das

programm im dritten setzer doch wieder obwohl es nicht soll wie ich dich verstanden habe.

änderung in "H3": ISTZAHL(G2);H2<>2);WENN(G2=B3;2;-1);"")

ändern in: ISTZAHL(G2);H2<>2;H1<>2);WENN(G2=B3;2;-1);"")

die möglichkeiten mit KGRÖSSTE sind nicht ohne, aber das was sie an rechenkapazitäten

schluckt ist ruhinös. zu viele spalten mit dieser funktionen (ebenso zählenwenn) in einer

tabelle können dazu führen das euer rechner (eigentlich nur office) einfach mittendrin nicht

mehr weiterrechnet und office sich aufhängt. (Strg+Alt+Entf und Excel beenden und neu

starten; man muß nicht den rechner neu starten- an dem liegts nicht).

lässt sich eine kostbar erarbeitete tabelle mal nicht mehr öffnen gibt es "recovery tools".

die URL stell ich mal nicht hier rein weil ich mir bezüglich URL´s noch unsicher bin über

euere gepflogenheiten.

ich bin auch mal gespannt auf andere lösungen!

schöne grüße matthias s.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo matthias s.,

ich hatte es schon richtig verstanden, dass DU ebenfalls eine Lösung liefern wolltest. Mathias war halt schneller, deswegen habe ich mit ihm hier auch kommuniziert :lol:

Deine Lösung gefällt mir gut, vor allem ist sie elegant! Ich habe einen ähnlichen Lösungsweg, allerdings mit KGrösste und KKleinste und damit die Formel nicht viermal in einer Zeile berechnet werden muss, eine extra Spalte eingeführt. Werde im Laufe des Tages meine Lösung vorstellen.

Vielen Dank für den Hinweis auf den Fehler in Spalte H. Werde dies im Eingangsposting berichtigen. Das kommt davon, wenn man nicht alle Konstellationen testet :lol:

Ich habe hier öfters im Forum gelesen, dass einige User Performance Probleme haben. Soweit ich verstanden habe, habt ihr eure Permanenzen in Excel-Tabellen stehen und rechnet damit. Da könnte das Problem liegen. Ich werde mal kurz beschreiben, wie ich meine Permanenz-Auswertungen vornehme.

Ich habe meine Permanenzen alle in Text-Dateien (pro Permanenz-Tag eine .txt Datei) stehen. Also habe ich ca. 4000 einzelne .txt-Dateien auf meiner Platte liegen. Der Dateiname ist folgendermaßen aufgebaut:

{tischnr}_{datum in der form jjjjmmtt} z.B. 1_20020323, also Tisch 1 vom 23.3.2002. Das Casino bekomme ich durch die Verzeichnisstruktur heraus. Das heißt, alle Hamburger Permanenzen stehen im Verzeichns ".../pmz/Hamburg".

Für die Auswertung habe ich mir nun einige VBA Makros geschrieben. Damit kann ich dann einzelne Tage einladen und mit meinen Excel-Formeln testen. Das Makro ist ganz einfach. Es wird ein Dateifenster eingeblendet, dort wähle ich eine oder mehrere gewünschte Permenenzen aus und kann diese dann über ein anderes Makro in der Excel-Auswertungsdatei einzelnen durchlaufen. Das Makro liest die einzelnen Zeilen der .txt-Datei und stellt die einzelnen Coups in die entsprechende Zellen in Excel ein. Vor dem Einlesen wird im Makro die Option "Berechnen -> Automatisch" auf "Manuell" gesetzt und nach dem Einlesen wird die Berechnung durch das Makro angestoßen. Dies hat den Vorteil, dass die Berechnung nicht mit jedem Coup neu vorgenommen wird, sondern erst dann, wenn alle Coups eingelesen sind. Bringt viel in der Performance.

Für Langszeittest habe ich ebenfalls ein Makro geschrieben. Dieses bietet mir die Möglichkeit, das Verzeichnis und damit das Casino auszuwählen. Dann wird ein Fenster mit einer Liste aller verfügbaren Monate aufgeblendet. Hier kann ich nun auswählen, welche Monate ich testen will - also z.B. Januar 2001 bis Dezember 2001. Danach werden alle Permanenzen der Reihe nach eingelesen und mit der Excel-Datei Tag für Tag ausgewert. Die jeweiligen Tagesergebnisse (Variablen sind hier frei wählbar z.B. Saldo, Min, Max, Kapitalbedarf) werden in ein automatisch angelegtes Monatsblatt geschrieben. Somit habe ich nach Ende des Tests für jeden getesteten Monat ein Tabellenblatt mit den vorher angegeben Werten (für jeden Tage eine Zeile) und den Monatssummen vorliegen.

So nun zur Performance. Ein Jahr, also über 300 Permanenzen bzw. ca. 10.000 Coups benötigt Excel zwischen 1 und 2 Minuten. Dabei habe ich etwas kurioses festgestellt. Wenn ich IE Browserfenster minimiert habe, läuft das ganze um bis zu 50% langsamer. Sind die IE Fenster maximiert, dann gibt es keine Performanceprobleme. Ich teste mit Excel 2000 auf einen Win 98SE Rechner.

Die Testzeit wird sicher durch die Anzahl bzw. Komplexität der Excel-Formeln beeinflusst. Klar läuft eine Berechnung mit vier Formel-Spalten schneller als eine Auswertung mit 30 Formel-Spalten. Die erste braucht halt 1 Minute, die zweite 2 Minuten :lol:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo und Entschuldigung,

vor lauter neuer Excel-Threads habe ich glatt vergessen, hier meinen Lösungsvorschlag für die eindeutige Ermittlung eines Favoriten einzustellen. Matthias S. hat ja schon eine lauffähige Lösung geliefert.

Hier nun mein Vorschlag.

A B C D E F G H I

1 Coups Dutz 1. Dutz 2. Dutz 3. Dutz 10 Cp Favo G/V Eind

2 0 0 0 0 0 0 NEIN

3 3 1 1 0 0 1 JA

4 14 2 1 1 0 2 NEIN

5 9 1 2 1 0 3 JA

6 16 2 2 2 0 4 NEIN

7 31 3 2 2 1 5 NEIN

8 8 2 2 3 1 6 JA

9 13 2 2 4 1 7 JA

10 12 2 2 5 1 8 JA

11 12 1 3 5 1 9 JA

12 20 2 3 6 1 10 2 JA

13 1 1 1 0 0 1 2 -1 JA

14 0 0 1 0 0 1 2 -1 JA

15 14 2 1 1 0 2 2 NEIN

16 16 2 1 2 0 3 JA

17 25 3 1 2 1 4 JA

18 26 3 1 2 2 5 NEIN

19 28 3 1 2 3 6 JA

20 8 1 2 2 3 7 JA

21 11 1 3 2 3 8 NEIN

22 31 3 3 2 4 9 JA

23 10 1 4 2 4 10 NEIN

24 18 2 4 3 4 11 NEIN

25 11 1 5 3 4 12 1 JA

26 22 2 0 1 0 1 1 -1 JA

27 2 1 1 1 0 2 1 2 NEIN

28 24 2 1 2 0 3 JA

Spalte I - Eind

Um einen eindeutigen Favoriten zu ermitteln, führen wir diese Spalte ein. Wenn in den Spalten C bis E ein Zähler größer ist als die beiden anderen, dann haben wir einen eindeutigen Favoriten. Diesen kennzeichnen wir mit der Zahl 1. Wenn nicht eindeutig, dann schreiben wir ein -1 in die Spalte:

=WENN(ISTZAHL(B2);WENN(KGRÖSSTE(C2:E2;1)<>KKLEINSTE(C2:E2;2);1;-1);"")

Also mit der Formel "KGrösste(C2:E2;1)" ermitteln wir erst einmal den größten Wert in den Zählerspalten. Wenn wir den zweitgrößten Wert ermitteln wollten, müssten wir schreiben "KGrösste(C2:E2;2)". Also gibt die Zahl nach dem Bereich die Stellung des n-größten Wertes an.

Wir müssen nun den größten Wert mit dem zweitgrößten Wert vergleichen. Wenn beide gleich sind, dann haben wir keinen eindeutigen Favoriten, wenn sie ungleich sind, dann haben wir einen eindeutigen Wert. Den zweitgrößten Wert können wir mit "KGrösste(C2:E2;2)" oder auch mit "KKLEINSTE(C2:E2;2)". KKleinste arbeitet wie KGrösste, nur dass hier 1 den kleinsten Wert, 2 den zweitkleinsten Wert usw. angibt. Da wir drei Zahlen haben, ist der zweigrößte und zweitkleinste Wert identisch. Also sind beide Abfragen möglich.

So, nun haben wir eine 1 in der Spalte stehen, wenn wir einen eindeutigen Favoriten haben. Wenn nicht, eine -1. Der Computer kann mit Zahlen schneller und "einfacher" umgehen als mit Zeichenketten wie "JA" oder "Nein". Aber für uns Menschen ist natürlich eine Zeichenkette leichter und schneller aufzunehmen und zu verstehen. Also wie machen wir nun aus 1 ein "JA" und aus -1 ein "NEIN". Ganz einfach, mit der benutzerdefinierten Zellenformatierung. Dazu die Spalte I markieren und über das Menü "Format -> Zellen" das Fenster "Zellen formatieren" aufrufen. Dort auf der Seite "Zahlen" in der Kategorie den Punkt "benutzerdefiniert" auswählen. Dann in das Feld "Typ:" folgende Zeichenkette kopieren und "OK" drücken:

[Blau]"JA";[Schwarz]"NEIN"

Was bewirkt nun diese Anweisung. Ein benutzerdefiniertes Format hat folgende Syntax:


[Farbe]"Format für positive Zahlen";[Farbe]"Format für negative Zahlen";[Farbe]"Format für Null";[Farbe]"Format für Text"

Ein gute Erklärung hierzu ist in der Excel-Hilfe unter dem Index "Format" und dann dem Punkt "Erstellen eines benutzerdefiniertes Zahlenformats" zu finden.

Somit ist unser Format leicht zu verstehen. Wenn positive Zahl in Spalte I (also 1), dann wird diese durch ein blaues "JA" ersetzt. Aus einer negativen Zahl (also -1) wird ein schwarzes "NEIN".

Spalte F - Favo

So, jetzt haben wir ein Kennzeichen für einen eindeutigen Favoriten. Wir müssen nun die Spalte F anpassen, da wir ja nun bei einem nicht eindeutigen Favoriten weiter zählen müssen als 10. Hier die geänderte Formel für die Spalte:

=WENN(ISTZAHL(F4);WENN(UND(F4>=10;I4=1);VERGLEICH(MAX(C4:E4);C4:E4;0);
WENN(UND(ISTZAHL(G3);ZÄHLENWENN(G1:G3;">0")<=2);G3;""));"")

Geändert wurde hier die Bedingung "Wenn(F4=10..." in "Wenn(Und(F4>=10;I4=1)....".

Warum? Nun, wir überprüfen mit I4=1, ob wir einen eindeutigen Favoriten vorliegen haben. Wenn ja, checken wir noch, ob der Zähler schon größer oder gleich als 10 ist, da wir ja den Favoriten in den letzten 10 Coups suchen wollen. Also im Grunde genommen eine einfache und schnelle Änderung. Uns kommt nun zugute, dass wir die Eindeutigkeit schon in der Spalte I ermittelt haben.

Spalte C - 1. Dutz

Angepasst werden müssen auch die Zähler für die einzelnen Dutzende. Da wir jetzt nicht mehr bei einem Zähler gleich 10 zurücksetzen können, ändern wir die Formel in

=WENN(ISTZAHL(B3);WENN(UND(F2>=10;I2=1);WENN(B3=1;1;0);WENN(B3=1;C2+1;C2));"")

Auch hier die Erweiterung der Bedingung "Wenn(F2=10...." in Wenn(Und(F2>=10;I2=1..." - Begründung dürfte klar sein.

Analog zur Spalte C in den Spalten D und E die Bedingung entsprechend anpassen!

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 4 weeks later...

hi chi,

den 2. teil konnte ich kaum bewältigen (suche von eind. favo), leider

die veränderungen haben mir die ganze tabelle umgeschmissen.

dummerweise habe ich vergessen, mir eine kopie anzulegen von der 1. tabelle... also, typische handlingunsicherheiten... bitte, noch eindeutiger die veränderungen anzeigen ("...in zelle blabla, folgende formel: ...")

etwa anderes stört gewaltig. vielleicht weißt du, wie mans ändern kann:

warum ist der textfluss total in die breite gezogen? normale breite reicht doch völlig... die scrollerei nervt tieeeerisch

ja ja, ich hör schon auf zu meckern

bouncing buk :smoke:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Buk,

die Breite des BS wird durch die Tabellen festgelegt. Kann man leider nicht ändern, wenn man seine Tabelle vollständig einstellen will.

Hier mal ein Download speziell für dich mit einem Excel-Spreedsheet für die Ermittlung der eindeutigen Favoriten.

Beschweren kannst du dich, aber ob ich darauf höre :smoke:

DK_Favoriten.zip

Link zu diesem Kommentar
Auf anderen Seiten teilen

hi chi,

war auch nit bös gemeint... ist mir hinterher auch eingefallen, das mit der breite der tabellen...

wie ist es, wenn man tabelle und text trennt? also einen thread für die tabellen zum looki looki machen, und dann einen link dazu für die augenfreundlichen texte - doof? wäre dann ordentlicher und übersichtlicher...

thanks für den download :smoke:

muß mich erst einmal erholen von meiner murxerei

cu

buk

Link zu diesem Kommentar
Auf anderen Seiten teilen

morning chi,

ich habe dk favoriten.xls entpackt und bekomme in spalte h eine fehlermeldung ("zirkelbezug"). in h1 wird ein wert angezeigt; formel =45=f5. h2 ist leer. zelle h3: =WENN(UND(ISTZAHL(A3);ISTZAHL(G2);H2<>2;H1<>2);WENN(G2=B3;2;-1);"")

gruß

buk

Link zu diesem Kommentar
Auf anderen Seiten teilen

hi chi,

danke für deine morgendliche erleuchtung :smoke:

Du kannst gerne eine Saldospalte einbauen, ich habe nichts dagegen

... hab ich versucht, aber ich bin doch noch so ein frischling...

normal geht das ja über die summenfunktion, doch in manchen zellen von h steht nix drinne. wie sag ich excel, dass er auch das nix zählen soll?

danke für deine unterstützung

gruß

buk

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie ist deine Meinung dazu?

Du kannst jetzt schreiben und dich später registrieren. Bereits registrierter Teilnehmer? Dann melde dich jetzt an, um einen Kommentar zu schreiben.
Hinweis: Dein Beitrag wird nicht sofort sichtbar sein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Neu erstellen...