=INHALT(Datei,Tabelle,Zeile,Spalte)

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Theozh
Beiträge: 5
Registriert: Sa, 11.06.2011 19:27

=INHALT(Datei,Tabelle,Zeile,Spalte)

Beitrag von Theozh »

Hallo,

In einer .ods Tabelle habe ich folgende Zellen

Zelle Inhalt
A1 E:/Test/
A2 Adressbuch.csv
A3 file:///E:/Test/Adressbuch.csv
A4 file:///E:/Test/Adressbuch.csv#Tabelle1
A5 Tabelle1
A6 Tabelle2

Nun möchte ich Inhalte aus einer CSV Datei einbinden gemäß einer Funktion "INHALT", die ich vergeblich gesucht habe:
=INHALT(Datei,Tabelle,Zeile,Spalte)

als Direktreferenz funktioniert es z.B. folgendermaßen
='file:///E:/Test/Adressbuch.csv'#Tabelle1.B5
Bei einer CSV Datei gibt es offensichtlich nur eine Tabelle, die man aber mit "Tabelle1" ansprechen kann.

Nun möchte ich:
1. Den Dateinamen nur einmal im Feld A1 und nicht in allen Formeln ändern müssen,
2. Die Zeilen und Spalten beliebig berechnen lassen

Wenn ich die Adressdaten in einer zweiten Tabelle (namens Tabelle2) in der gleichen Datei habe, dann funktioniert folgendes:
=INDIREKT(ADRESSE(ZeilenFormel;SpaltenFormel;1;1;$A$6))
wobei $A$6 den Text "Tabelle2" enthält und die Zeilen und Spalten als Referenz auf Zahlenwerte gegeben sind oder per Formel ausgerechnet werden.

Wenn sich die Adressdaten nun aber in einer externen Datei (Pfad und Name in A1 und A2 festgelegt) befinden, wie kann man es dann realisieren?

=INDIREKT(ADRESSE(Zeile;Spalte;1;1;$A$4)) führt zu Err:508 "Fehler in der Klammerung".

mit SVERWEIS() komme ich auch auf keinen grünen Zweig...
Wer kann mir weiterhelfen?

Danke für Hinweise...
Theo.
Karolus
********
Beiträge: 7533
Registriert: Mo, 02.01.2006 19:48

Re: =INHALT(Datei,Tabelle,Zeile,Spalte)

Beitrag von Karolus »

Hallo
Angenommen du ergänzt A5 bsplw. zu:
Tabelle1.A1:B5
kannst du mit

Code: Alles auswählen

=DDE("soffice";A1&A2;A5;2)
als Matrixformel, (wg des mehrzelligen Bereichs)
diesen Zellbereich "rüberholen"
Siehe OOohilfe →DDE

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: =INHALT(Datei,Tabelle,Zeile,Spalte)

Beitrag von Stephan »

Du kannst eine csv-Datei unter diesen Bedingungen nicht verlässlich in OOo einbinden, da Du beim Schliessen und Neuöffnen der Datei die Verknüpfung zur csv-Datei nicht auffrischen kannst.

Du wirst also die Daten der csv-Datei manuell in die dAtei kopieren oder per Makro übertragen müssen.


Gerade Gesagtes gilt natürlich nur für das Verknüpfen von csv-Dateien in Calc und nicht für normale tabellendokumente wie z.B. xls oder ods.



Gruß
Stephan
Theozh
Beiträge: 5
Registriert: Sa, 11.06.2011 19:27

Re: =INHALT(Datei,Tabelle,Zeile,Spalte)

Beitrag von Theozh »

Danke für die Rückmeldungen...

@Karo
aus der OO-Hilfe zu DDE werde ich nicht schlau...
=DDE("soffice";"E:/Test/Alphabet.csv";Tabelle1.A1;2)
gibt mir keinen Wert zurück
#NV nicht verfügbar
In der Zelle mit dieser Formel müsste doch jetzt der Wert aus Zelle A1 der Tabelle1 der CSV Datei stehen, oder?
Ich möchte auch nicht den ganzen Bereich "rüberholen", sondern nur einzelne ausgewählte Werte.

@Stephan
mit z.B.
='file:///E:/Test/Alphabet.csv'#$Tabelle1.B1
konnte ich bis jetzt problemlos die Daten aus der CSV "herausholen".
Wenn ich die .ods Datei mit solchen Verlinkungen öffne, fragt OO ob ich aktualisieren will, d.h. wenn ich aktualisieren will, muss ich die Datei schliessen und wieder öffnen. Einen anderen Weg habe ich noch nicht entdeckt.

Die Daten manuell kopieren oder ein Makro schreiben... genau das möchte ich vermeiden.

Da muss es doch noch etwas anderes geben...
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: =INHALT(Datei,Tabelle,Zeile,Spalte)

Beitrag von Stephan »

aus der OO-Hilfe zu DDE werde ich nicht schlau...
und warum nicht? WEnn Du Hilfe zur Hilfe willst mußt Du schon erklären was Du nicvht verstehst.
=DDE("soffice";"E:/Test/Alphabet.csv";Tabelle1.A1;2)
gibt mir keinen Wert zurück
#NV nicht verfügbar
Augenscheinlich entspricht diese Formel ja auch nicht einer Formel für eine DDE-Verknüpfung, denn z.B. die Hilfe von OOo liefert folgendes Beispiel:

=DDE("soffice";"c:\office\Dokument\Daten1.sxc";"sheet1.A1")

womit klar sein dürfte das der Parameter für den Bereich als String:

"Tabelle1.A1"

zu übergeben ist und nicht als

Tabelle1.A1

In der Zelle mit dieser Formel müsste doch jetzt der Wert aus Zelle A1 der Tabelle1 der CSV Datei stehen, oder?
Nein, weil das für csv-Dateien nicht geht. (Es geht nur scheinbar, da es solange geht wie beide Dateien geöffnet sind, sobald man diue csv-Datei schließt und die Verknüpfung, egal ob DDE- oder file-Verknüpfung) aktualisieren will geht es nicht.
mit z.B.
='file:///E:/Test/Alphabet.csv'#$Tabelle1.B1
konnte ich bis jetzt problemlos die Daten aus der CSV "herausholen".
Soweit mir bekannt: Nein, das konntest Du nicht, weil dieses 'problemlos' immer nur so lange funktioniert wie die Datei(en), nach Herstellen der Verknüpfung, geöffnet bleiben.
Wenn ich die .ods Datei mit solchen Verlinkungen öffne, fragt OO ob ich aktualisieren will, d.h. wenn ich aktualisieren will, muss ich die Datei schliessen und wieder öffnen. Einen anderen Weg habe ich noch nicht entdeckt.
Darin liegt aber nicht das Problem, das liegt vielmehr darin das Du nicht eine Verknüpfung zu einer csv-Datei aktualisieren kannst wenn diese einmal geschlossen wurde, sondern immer nur solange wie diese, nach Herstellen der Verknüpfung, offen bleibt.
Aktualisieren von Verknüpfungen wäre hingen ganz sdimpel über Bearbeiten-Verknüpfungen möglich, es geht aber unter den hier vorliegenden Umständen nicht.
Da muss es doch noch etwas anderes geben...
Meines Wissens nein.

Ich hatte deutlich gemacht das es bei dem Problem um csv geht und nur darum denn mit xls oder ods etc. gehjt es ja wie gewünscht. Für csv hingegen kenne ich keinen Weg einer aktualisierbaren, dauerhaften Verknüpfung mit Bordmitteln von Calc.



Gruß
Stephan
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: =INHALT(Datei,Tabelle,Zeile,Spalte)

Beitrag von Stephan »

Und danach alles ist bei mir in bester und aktueller Ordnung :-).
Das kann ich mir beim ALLERBESTEN Willen nicht vorstellen, da es NICHT möglich ist eine Verknüpfung zu einer csv(!) Datei zu aktualisieren.

Was Deine vorgestellte Lösung hingegen mit dem Nachgefragten zu zun haben soll verstehe ich nicht denn dort findet offensichtlich nur eine DDE-Verknüpfung zu einer Tabelle innerhalb der DAtei statt, also mitnoichten eine Verknüpfung zu einer csv-Datei.



Gruß
Stephan
Theozh
Beiträge: 5
Registriert: Sa, 11.06.2011 19:27

Re: =INHALT(Datei,Tabelle,Zeile,Spalte)

Beitrag von Theozh »

Hallo Stephan,

Ändere ich die CSV Datei und öffne dann wieder die .ods Datei sind sind die Änderungen in der .ods Datei drin. Frag mich nicht wieso. Mit OO 3.3.0 OOO330m20 Build 9567 scheint das zu gehen.

Wieso nichts zu tun mit dem Nachgefragten?
In Tabelle Auszug.$A$1 steht "E:/Test/Adressbuch.csv"
Damit ist doch
=DDE("soffice";$A$1;ADRESSE($B2;C$1;4;1;"Tabelle1");2)
ein Link auf eine externe CSV Datei, oder?

"Alles in Ordnung" stimmt vielleicht nicht ganz. Wann und wie die Umlaute manchmal korrekt geladen werden habe ich noch nicht verstanden.
z.B. Mühltorstr. statt Mühltorstr. usw.
Wie kann man einer .ods Tabelle sagen, dass sie UTF-8 einladen bzw. interpretieren soll?

schönen Gruss,
Theo.
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: =INHALT(Datei,Tabelle,Zeile,Spalte)

Beitrag von Stephan »

Damit ist doch
=DDE("soffice";$A$1;ADRESSE($B2;C$1;4;1;"Tabelle1");2)
ein Link auf eine externe CSV Datei, oder?

Ja stimmt (wobei Verknüpfung und nicht Link).

Gruß
Stephan
Antworten