Formel nicht ganz perfekt?!?

Hallo,

die folgende Formel aus der Riesendatei, aus der ich einen Ausschnitt gestern auch schon weiter unten gepostet hab, liefert fast immer das richtige Ergebnis. Nur leider dann nicht, wenn eine Aktie in 2005 ge- und wieder verkauft worden ist, und später noch ein zweites Mal in 2005 gekauft worden und dann weiter im Depot gehalten wird:

=WENN(C2038=„h“;(O2038-INDEX($O$7:blush:O$2007;VERGLEICH(U2038;$U$7:U2038;0)))*INDEX($V$7:blush:V$2007;VERGLEICH(U2038;$U$7:U2038;0));"")

Jemand eine Idee? Wegen der Riesengröße hab ich die komplette Datei unter http://rapidshare.com/files/735046/posten_061026.zip… gepostet. Die richtige Stelle ist sofort aufgeschlagen, es gibt nochmal ein Textfeld mit näheren Infos dort.

Freue mich auf jeden Hinweis.

Gruß
Jörg

Hi Jörg,
ich kenne Access nicht und weiß nun nicht was in deinem Fall angebrachter wäre. Lösbar ist es sicher mit beiden Programmen aber da ich nicht die Ahnung von maria habe weiß ich nicht welches programm auf Dauer mehr Sinn macht.

Zur Dateigröße, XL97 bricht gleich beim Laden zusammen, XL2000 ab und zu und zwar schon wenn man nur ne Spalte nach rechts geht. Habejetzt neu XL2003, da passiert bisher sowas nicht. Also bringt die schiere Größe Probleme wenn es auf Fremdrechnern läuft die vielleicht älteres Excel haben oder nur wenig Arbeitsspeicher. Von daher ist es angesagt mal darüber nachzudenken die Daten auf mehree dateien aufzuteilen und dann in einem Hauptdokument nur die wirklicjh nötigen Datwn zusammenzufassen.

Deine Datei hat 44MB, wenn man alle Formeln, Fehlermeldungen bed Formatierungen, farben usw rauswirft so kommt man auf unter 10MB. Sicher wäre das auf noch unter 5 MB zu verringern, vielleicht noch kleiner.
Wobei dann Vba nur in dem Fensterbereich den du gerade siehst die Werte aktuell berechnet, die Fraebn setzt usw, also gleiche Funktionalität wie gewohnt plus Features die es derzeit noch nicht gibt, also automatisch nach Änderungen Diagramme erstellen, anzeigen oder was sonst noch erwünscht ist, per masusklick die datei oder Dateiteile via Outlook zu verschicken o.ä.
Da Vba dies ja nur für 40 zeilen und 12 Spalten machen muss ist es so schnell dass du nix siehst, evtl kurzes Bildschirmflimmern im Millisekundenbereich. Bei Interesse–>Mail.

die folgende Formel aus der Riesendatei, aus der ich einen
Ausschnitt gestern auch schon weiter unten gepostet hab,
liefert fast immer das richtige Ergebnis. Nur leider dann
nicht, wenn eine Aktie in 2005 ge- und wieder verkauft worden
ist, und später noch ein zweites Mal in 2005 gekauft worden
und dann weiter im Depot gehalten wird:

=WENN(C2038=„h“;(O2038-INDEX($O$7:blush:O$2007;VERGLEICH(U2038;$U$7:U2038;0)))*INDEX($V$7:blush:V$2007;VERGLEICH(U2038;$U$7:U2038;0));"")

Ein Tipp, du machst dir und allen die da Fehler suchen das Leben einfacher wenn in C „H“ steht dass du dann auch nach „H“ vergleichst und nicht nach „h“. Weil Excel da völlig unkonsequent ist kann ich mir nicht von allen Befehlen merken ob da nun nach Groß bzw Klein unterschieden wird oder nicht. Hält halt auf dies bei jedem Befehl zu checken.
Also entweder in C nur a-z zulassen oder
=WENN(Klein(C2038)=„h“…

Gruß
Reinhard

Hallo Jörg,

die Formel rechnet wie folgt:

=WENN(C2038=„h“; wahr

(O2038 ergibt 45,61

= Kurs für 30.12.2005 ist korrekt

-INDEX($O$7:blush:O$2007;VERGLEICH(U2038;$U$7:U2038;0)))

Kurs aus der Zeile mit der Fundstelle, die Zeile , die den gleichen Eintrag in Spalte U hat, wie die Vergleichszelle (Vergleich liefert Zeile 1475, tatsächlich steht der gleiche Wert für die Bezeichnung der Aktie in Zeile 1481, der Kurs mit dem Excel rechnet ist richtigerweise aus 1481 *erstaunt*
Hat Excel hier evtl. ein Problem mit dem Schrägstrich in der Bezeichnung der Aktie???
ergibt somit -67,41 korrekt

*INDEX($V$7:blush:V$2007;VERGLEICH(U2038;$U$7:U2038;0));"")
hier entsprechend, Excel liefert mit Spalte V die Anzahl der Aktie und holt den Wert wieder aus Zeile 1481

ergibt somit *264 korrekt

insgesamt =(45,61-67,41)*264 ergibt -5.755 somit richtig

oder anders, mit dieser Formel gibt es immer einen Verlust, wenn die Atie im Wert steigt.

Ich habe im Moment noch keine Peilung, wie man es besser machen kann. Habe heute allerdings nur wenig Zeit, das Problem aber sehr gut im Kopf - mitunter kommt ja ganz plötzlich d e r Gedanke. dann werde ich irgenwie gleich probieren.

Gruß
Maria

Hi Jörg,

=WENN(C2038=„h“;(O2038-INDEX($O$7:blush:O$2007;VERGLEICH(U2038;$U$7:U2038;0)))*INDEX($V$7:blush:V$2007;VERGLEICH(U2038;$U$7:U2038;0));"")

ergibt -5.755

der Wert stimmt nicht, Salzgitter wurde am 22.7.05 zu 25,89 Euro gekauft und hat am 30.12. einen Wert von 45,61 - es ist also ein dicker Gewinn und kein Verlust entstanden.

Am 22.7.05 wurden 429 Stück Salzgitter gekauft zu 25,89 als DE0006202005/1
Am 07.7.05 wurden 264 Stück Salzgitter gekauft zu 67,41 als DE0006202005/2
Die sonstigen Erwähnungen von Salzgitter in 2005 sind nicht deutbar, keine Mengen nur Kurse.

Stichtagkues 31.12 in O2038 = 45,61€
=VERGLEICH(U2038;$U$7:U2038;0) ergibt 1475 somit ergibt dann
=INDEX($O$7:blush:O$2007;VERGLEICH(U2038;$U$7:U2038;0)) den Wert aus O1481, also 67,41
=INDEX($V$7:blush:V$2007;VERGLEICH(U2038;$U$7:U2038;0)) liefert die Menge vom 22.7
In deiner Formel berechnest du:
=WENN(C2038=„h“;(O2038-INDEX($O$7:blush:O$2007;VERGLEICH(U2038;$U$7:U2038;0)))*INDEX($V$7:blush:V$2007;VERGLEICH(U2038;$U$7:U2038;0));"")
d.h.
=WENN(C2038=„h“;(45,61-67,41)*264;"")
und das ist nun mal negativ.

Ohne Werte für die Übernahme aus 2004 müßte die korrekte Rechnung fü+r den 31.12.05 so lauten:
=(429+264)*O2038-264*67,41-429*25,89 = +2705 €

Ich mutmaße du wirst da ne Matrixformel brauchen sofern es überhaupt ohne Vba geht.

Gruß
Reinhard

Hallo Rainer,

danke für das Angebot mit dem Makro. Ich weiss im Moment nicht so richtig, wie ich damit umgehen soll. Einerseits denke ich schon, dass 50 MB einfach ein Wahnsinn ist, und dass soviele Formeln in der Datei echt nicht sein müssen. Ich hab mir schon mal ein Makro für eine Datei basteln lassen, die vom Aufbau her was den Block angeht, der aus dem Börsenprogramm kommt, identisch war. Der Anwendungszweck war aber ein anderer - es ging da um ein Backtesting für jeweils ein Kalenderjahr, um eine akzeptable Parameterkombi rauszufinden, wie ich sie für die jetzt gepostete Excel-Datei verwende.

Jetzt ist es mehr eine dynamische Anwendung, insofern als jede Woche neue Kursdaten reinkommen, und der Grund, warum ich das wieder „zu Fuß“, also mit Formeln gemacht habe, ist die größere Flexibilität, denn bestimmte Einzelheiten kann ich da auch mal selber variieren, ohne rückfragen zu müssen.

Außerdem gab es beim Makro häufig Fehler, wie z.B. „Laufzeitfehler 13: Typen unverträglich.“, oder aber es blieb bei der Berechnung einfach bei einer bestimmten Prozentzahl stehen.

D.h. nicht, das dass Makro letztlich nicht seinen Zweck erfüllt hätte, doch für die kontinuierliche wöchentliche Arbeit scjien es mir zu unzuverlässig, denn wenn mal wieder irgendwas unvorhergesehenes auftritt, krieg ich zwar Hilfe, aber nicht unbedingt am Samstag oder Sonntag (es werden immer Wochenschlusskurse verarbeitet, und ich hab ich halt am Samstag morgen vorliegen), wenn ich sie brauche.

Gruß
Jörg

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Reinhard,

sorry für die fehlende Erläuterung, ohne die die Sache in der Tat nicht nachvollziehbar ist.

Wenn du „22.07.“ bei Bearbeiten, suchen eingibst, stößt du in Zeile 434 auf Salzgitter. Dort steht der Kurs 25,89 Euro, der im Übrigen per Hd. aus „C“ reinkopiert ist, ebenso wie die Kauf- bzw. Verkaufsignale. In Spalte V wird die Stückzahl berechnet, die bei einem festgelegten zur Verfügung stehenden Betrag gekauft wird. Von dieser Zeile aus gibst du „Salzgitter“ ein bei Bearbeiten, suchen. Am 5.8. gab es ein erneutes Kaufsignal, doch dem ist nicht gefolgt worden, denn die Aktie war ja schon im Depot. Was ich da heute morgen gepostet hab ("… Nur leider dann nicht, wenn eine Aktie in 2005 ge- und wieder verkauft worden ist, und später noch ein zweites Mal in 2005 gekauft worden und dann weiter im Depot gehalten wird") ist Quatsch, denn erst am 7.7.06 wird erneut gekauft, nachdem am 7.4.06 verkauft worden ist. Ge- und verkauft worden sind Aktien jeweils nur dann, wenn in Spalte D ein „K“ oder ein „V“ steht, die anderen Infos sind insofern überflüssig, sollten aber die Berechnung möglichst nicht stören.

Die richtige Rechnung ist also 429 x (45,61 Stichtagskurs am 30.12.05 - 25,89 Kaufkurs am 22.7.05 = + 8459,88 Euro).

Unabhängig von den Formeln (wo ich auf jeden Fall an einer richtigen Lösung interessiert bin) entwickle ich langsam doch Sympathien für das Makro. Denn was noch völlig fehlt ist die Festlegung, wie realisierte Gewinne wieder neu investiert werden. Im Augenblick passiert das nur teilweise, und mit Formeln kann ich es auch nicht richtig abdecken.

Gruß
Jörg

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Maria,

so ähnlich arbeite ich auch und es ist auch die beste Methode: Problem erfassen, loslassen und was ganz anders machen, die Lösung kommt ganz bestimmt quasi automatisch.

Wenn sie da ist, dann aber schnell ein Stück Papier zur Hand nehmen oder noch besser gleich an den PC.

Lies aber bitte auch noch, was ich Reinhard geantwortet habe.

Gruß
Jörg

P.s.: unten hab ich auch nochmal was zu Access gepostet. Was der Bauer nicht kennt, das frät er ja bekanntlich nicht, aber ich weiss, dass die Access-Geschichten sehr stabil laufen

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Jörg,

danke für das Angebot mit dem Makro. Ich weiss im Moment nicht
so richtig, wie ich damit umgehen soll. Einerseits denke ich

mein letzter Hinweis in dieser Sache, der Moderator *bedank ;.)* ist eh schon tolerant, -->Mail
Ansonsten gibt es in der Expertensuche Leute die Auftragsprogrammierer
sind

Jetzt ist es mehr eine dynamische Anwendung, insofern als jede
Woche neue Kursdaten reinkommen, und der Grund, warum ich das
wieder „zu Fuß“, also mit Formeln gemacht habe, ist die
größere Flexibilität, denn bestimmte Einzelheiten kann ich da
auch mal selber variieren, ohne rückfragen zu müssen.

Das verstehe ich. Du willst selbst was abändern. Wenn ich eine Software kaufe die z.B die Einkommenssteuererklärung ausfüllt, so bin ich gezwungen wenn sich die Steuersätze ändern das Update zu kaufen.
Aber wn du dem Auftragsprogrammierer sagen ungefähr kannst was denn wo an Änderungen auftretetn könnten kann e das so programmieren dass die Masse mit Vba „erledigt“ wird, und du in den bestimmten Splaten mit Formeln, die du selbst anpassen lannst, arbeiten kannst.

Außerdem gab es beim Makro häufig Fehler, wie z.B.
„Laufzeitfehler 13: Typen unverträglich.“, oder aber es blieb
bei der Berechnung einfach bei einer bestimmten Prozentzahl
stehen.

Dann hat das Makro keine durchdachte Fehlerbehandlungsroutine. Man muss halt alles an Eingaben prüfen bei der Eingabe prüfen, wenn jmd ein Eingabefenster kriegt wo steht „Bitte geben Sie eine Ganzzahl zwischen 1 und 5 ein“ so muss man halt die Eingabe prüfen ob die Vorgabe erfüllt wurde, wenn nicht kann man dann wählen was passieren soll. Der Arbeitsaufwand um alle möglichen und unmöglichen Fehler abzudecken ist höher als der reine Code.
Nur mal so, man muss prüfen ob das Excel auf PC oder Mac läuft, welche Version es ist, ob der Schweizer der in Shanghai sitzt eine italienische, französische , deutsche, englische Tastatur benutzt/ausgewählt hat sonst kriegt man Stress mit den Dezimaltrennzeichen Punkt und Komma, ob er das Blatt mit einem Blattschutz belegt hat, dann muss man diesen entfernen, man muss prüfen ob er das Blatt ausgeblendet hat und sich dann beschwerrt dass das makro nicht läuft usw. usw.
damit verglichen ist es relativ eibnfach deien Formel mit Vba umzusetzen.

D.h. nicht, das dass Makro letztlich nicht seinen Zweck
erfüllt hätte, doch für die kontinuierliche wöchentliche
Arbeit scjien es mir zu unzuverlässig, denn wenn mal wieder
irgendwas unvorhergesehenes auftritt, krieg ich zwar Hilfe,
aber nicht unbedingt am Samstag oder Sonntag (es werden immer
Wochenschlusskurse verarbeitet, und ich hab ich halt am
Samstag morgen vorliegen), wenn ich sie brauche.

Naja, einmal Makroprogramm erstellen kosten dieses, es monatlich pflegen jenes und 24h Pflege halt noch was anderes.
Also ist auch WE-Update möglich. Wie beim Schlüsseldienst wenn man die Tür zugeschlagen hat, 75€ werktags zu Öffnungszeiten, Nachts 200 €…
Gruß
Reinhard

Hallo Reinhard,

auf das Angebot mit dem Makro komme ich noch zurück und überlege derzeit, welche Spezifikationen es überhaupt erfüllen muss (gilt auch für eine evt. Access-Lösung). Wie du schon richtig sagst, muss man das wohl sehr sauber angehen, auch von den Vorüberlegungen her.

Bist du so lieb und schaust unter Bezugnahme auf
Re^2: Formel nicht ganz perfekt?!?
zwischenzeitlich nochmal in die Datei rein? Einge wichtige Erläuterungen hatte ich nicht gegeben, so dass ich euch beide auf die falsche Spur gebracht habe.

Gruß
Jörg

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]