Hallo Molly,
Also ich habe verstanden, dass man mit DDE Daten aus anderen Tabellen holen kann, aber ich habe noch nicht wirklich verstanden, wie.
Wenn Du in meiner Beispieldatei die geforderten Eingaben im Tabellenblatt "DDE_Eingaben" gemacht hast, dann holt sich Calc die Daten automatisch aus der dementsprechenden Excel-Datei. Diese muss jedoch an dem angegebenem Ort auch vorhanden sein, und auch der Tabellenname muss richtig geschrieben sein.
Du hast vorher mit ='file:///C:/Ordner... gearbeitet, und DDE ist fast das gleiche. Natürlich gibt es zwischen den beiden interessante unterschiede.
Bei =file:///... werden in die Zieldatei die "verknüpften" Tabellenblätter aus der dementsprechenden Datei versteckt eingefügt. Überprüfen kannst Du das mit
-> Format
-> Tabelle
-> Einblenden
Ferner muss bei =file:///... die Quelldatei erst gespeichert werden, damit die Funktion auf die geänderten Daten zugreifen kann.
Bei DDE werden keine Dateien versteckt eingefügt, und ferner muss auch nicht die Quelldatei erst gespeichert werden, nach dem dort die Daten geändert wurden.
Wo muss man denn diese Anfangsdaten eingeben?
Tabellenblatt "DDE_Eingaben"
Vielleicht muss ich mir das auch noch genauer anschauen
Yep, solltest Du.
Und nun zu der Komplexen Formel.
=WENN(
UND(ZEILE()>=$C$6;ZEILE()<=$C$7);DDE("excel";$F$1&"["&$C$3&".xls"&"]"&$C$4;"Z"&WENN(UND(ZEILE()>=$C$6;ZEILE()<=$C$7);ZEILE())&"S"&SPALTE(INDIREKT($C$5&1)));"")
Es gibt 3 Teile einer WENN-DANN-SONST Formel. Die habe ich in 3 Farben aufgeteilt.
Blau:
Überprüfen
Grün:
Ausführen wenn Blau zu trifft.
Rot:
Ausführen (Beenden) wenn Blau nicht zu trifft.
Blau:
Es wird überprüft ob die Aktuelle Zeilennummer größer oder gleich (>=) der Zahl in C6 ist, und ob die Aktuelle Zeilennummer kleiner oder gleich (<=) der Zahl in C7 ist. Wenn dies zu trifft, dann wird mit dem Grünen Bereich weiter gemacht. Sollte es nicht zu treffen, dann wird der Rote Teil ausgeführt, es wird eine Leere Zelle ausgegeben
Grün:
Wie Du siehst sind dort verschiedene Zelladressen, wie z.B. $C$3 und $C$4. Und das bedeutet, dass der jeweilige Zellinhalt an dieser Stelle in die Formel eingebaut wird. Dadurch entsteht dann beispielsweise folgende Formel.
Eingeben tust Du im Tabellenblatt "DDE_Eingaben"
den Pfad (D:\Programme\)
den Dateinamen (Test)
den Blattnamen (Blatt1)
Der Spaltenname D wird durch die Formel umgewandelt, damit er der Excel-DDE-Notation entspricht. Diese ist jetzt nicht wie gewohnt D1, sondern Z1S4. Wobei Z1 gleich die Zeile 1, und S4 die Spalte 4 (Spaltenname D) ist.
Den Spaltennamen gibst Du ja in C5 an, und die erste Zeilennummer in C6.
Wenn jetzt die gesamte Formel runterkopiert wird, dann muss sich ja auch die Zeilennummer für Z erhöhen. Und das geschieht genau so wie die Überprüfung im Blauen Teil. Nur mit dem kleinen Unterschied, dass nach der Überprüfung durch ZEILE() die dementsprechende Zeilennummer ausgegeben wird. Würde man jetzt für jede Zeile die Formel von Hand ausschreiben, dann würde das wie folgt aussehen
Code: Alles auswählen
DDE("excel";"D:\Programme\[Test.xls]Blatt1";"Z1S4")
DDE("excel";"D:\Programme\[Test.xls]Blatt1";"Z2S4")
DDE("excel";"D:\Programme\[Test.xls]Blatt1";"Z3S4")
DDE("excel";"D:\Programme\[Test.xls]Blatt1";"Z4S4")
etc. ...
Das was Du aber nicht eingibst, jedoch hier in den ausgeschriebenen Beispielformeln zu sehen ist, das sind feste Bestandteile die ich fest in der Formel integriert habe. Als da wären:
- excel
- [
- .xls
- ]
- Z
- S
Jaj ja!
Ich gebs ja zu, das ich die Formel etwas übersichtlicher aufbauen könnte

. Aber ich musste erst noch andere Dinge regeln.
Ich hoffe ich konnte dir mein Problem verständlich schildern
Für heute bin ich ja schon mal froh, dass ich im groben die Formel erklärt habe.
Das mit dem Datenpilot muss ich mir noch mal in Ruhe durch den Kopf gehen lassen, wenn ich ihn in den Kühlschrank kriege

.
Gruß
balu