Bezug zwischen 2 tabellen herstellen

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

byteeater
***
Beiträge: 73
Registriert: So, 29.01.2006 13:37

Bezug zwischen 2 tabellen herstellen

Beitrag von byteeater »

Hallo.

Ich suche nach einer Möglichkeit in meiner Tabelle mit Feldarbeiten für die Landwirtschaft (für jedes Feldstück gibt es eine eigene Tabelle) einen Bezug auf eine andere Tabelle mit Angaben zu getätigten Pflanzenschutzmaßnahmen herzustellen.

Bis jetzt habe ich immer die Angaben aus der Pflanzenschutztabelle in die dazugehörige richtige Tabelle mit den Feldarbeiten kopieren müßen. Das ist sehr mühselig gewesen und manchmal sind auch Daten in die falsche Tabelle "gerutscht".

Es sieht so aus, daß jedes Feldstück eine bestimmte Zahl als Bezeichnung hat.
Die Tabelle für den Pflanzenschutz umfasst für jedes Feldstück einen bestimmten Bereich, in dem die Daten ( Datum, Arbeitsart; Aufwandmenge usw.) eingetragen werden. Auch diese Bereiche sind mit den Bezeichnungen der Feldstücke gekennzeichnet. Da sich die Bezeichnungen und die Anzahl (jedoch NICHT die Form) der Bereiche jedes Jahr ändern können (mal mehr mal weniger Feldstücken) suche ich nun nach einem Weg odere einer Formel die es jeder Feldstückstebelle ermöglicht, den zu ihrer Bezeichnung passenden Bereich in der Pflanzenschutztabelle automatisch zu finden und in sich selbst darzustellen.
Also daß am Ende die richtigen Einträge der Pflanzenschutztabelle in gleicher Form in der Feldstückstabelle zu sehen sind.

Ich hoffe, das Problem einigermaßen anschaulich dargestellt zu haben und freue mich über jeden Rat.
Vielen Dank schon im voraus.
Bernd
Eia
********
Beiträge: 2614
Registriert: Sa, 23.12.2006 07:40

Beitrag von Eia »

Ich sehe noch nicht so ganz klar.
Also:
Du hast eine Tabelle "Felder", darin Feldstück: 1111
Heisst die Tabelle so? Oder wo ist dieseFeldbezeichnung hinterlegt?

Wie sieht der Bereich in der Pflanzenschutztabelle aus, der genau zu diesem Feldstück angezeigt werden soll? Immer die gleiche Anzahl Zeilen/Spalten? Wieviel? Wo kommt die Bezeichnung des Feldstückes (1111) vor? In jeder Zeile?

Könntest Du die Dateien irgendwo hochladen, damit man sie sich ansehen könnte?
byteeater
***
Beiträge: 73
Registriert: So, 29.01.2006 13:37

Beitrag von byteeater »

Also ich versuch nochmal zu erklären :)


1.Ich habe ein Tabellendokument FELDER
darin sind mehrere Tabellen , eine Tabelle für jedes einzelne Feld. so kann ich , ohne dauernd ein neues Dokument zu öffnen einfach im Tabellenragister von einem Feld zum nächsten "schalten". Die Tabellen selber haben Kurzbezeichnungen damit das Register ausreicht (z.B 1_1 ,1_2 usw.) Die richtigen Feldbezeichnungen sind IN den Tabellen jeweils immer in der selben Zelle eingetragen (z.B. C3 )

2. Ich habe ein Tabellendokument PFLANZENSCHUTZ
darin ist nur eine Tabelle mit mehreren Bereichen.
In jeweils EINEN Bereich kommen alle getätigten Pflanzenschutzmaßnahmen EINES Feldes (es gibt für jedes Feld einen Bereich).
Dieser Bereich ist für jedes Feld gleich groß, also hat die selbe Anzahl Zeilen und Spalten ( darin enthalten sind z.B. Datum , Arbeitsart , Aufwandmenge , verwendetes Pflanzenschutzmittel ). Im Kopf eines jeden Bereiches auch immer an der selben Stelle steht die Feldbezeichnung im gleichen Format wie in den Tabellen FELD, also nicht die Kurzbezeichnung!

Auf deutsch gesagt sollen die Tabellen im Dokument FELDER sich das Dokument PFLANZENSCHUTZ ansehen; nachschauen welcher Bereich der für Sie passende ist (Feldbezeichnungen müßen überein stimmen ! ) und alle Eintragungen oder auch den ganzen Bereich inclusive Rahmen, Farben usw. IN SICH übernehmen.
Und das an einen Platz, der dafür freigehalten ist und von Zeilen- und Spaltenmaß sowie -abmessung passt.

Dabei muß es egal sein, ob zum Beispiel der Bereich für Feld 0100-1 an erster ;dritter oder letzter Stelle steht.

hoffe nochmal etwas licht ins Dunkel gebracht zu haben. Leider hab ich keinen webspace zum hochladen :-(

bernd
Eia
********
Beiträge: 2614
Registriert: Sa, 23.12.2006 07:40

Beitrag von Eia »

Ich denke, das kriegen wir mit DDE hin.
Ich machs mal mit einem Beispiel:

In der Pflanzenschutzdatei soll die Zelle, die die Feldnummer enthält jeweils in Spalte B stehen.

Um nun zu wissen, in welcher Zeile die richtige Feldnummer steht, gibst Du in der Felder-Datei ein:
=VERGLEICH(B1;'file:///home//Pflanzenschutz.ods'#$Tabelle1.B1:B32000;0)
Ich würde das zunächst in eine Hilfszelle schreiben, sonst wird die ganze Formel gleich sehr unübersichtlich. Ich nehme jetzt mal an, die Formel steht in der Feld-Tabelle in Zelle C1 und liefert z.B. das Ergebnis 15.
Damit weisst Du, dass der benötigte Bereich in der Pflanzenschutztabelle. in B15 beginnt. Du sagst, es sind immer gleich viel Zeilen, sagen wir 5, dann weisst Du, dass Du die Zeilen B15 bis B20 brauchst.

Nun nehme ich an, dass Du die Spalten B bis F benötigst.

Jetzt müssen wir den Bereich so zusammensetzen, dass sowas dabei herauskommt:
$Tabelle1.B15:F20 (wobei "Tabelle1" der Tabellenname in der Pflanzenschutztabelle wäre).
Das kannst Du ja nochmals in einer Hilfszelle tun, sagen wir: D1. Dort steht:
="$Tabelle1.B"&C1&":F"&(C1+5)
Und nun sieht die DDE-Formel, mit der Du Dir diesen Bereich B15:F20 holst, so aus:
=DDE("soffice";"/home//Pflanzenschutz.ods";D1)

Die DDE-Formel ist eine Matrixformel und muss mit SHIFT+CTRL+Enter abgeschlossen werden. Sie erhält dann automatisch geschweifte Klammern und sieht so aus:
{=DDE("soffice";"/home//Pflanzenschutz.ods";D1)}

So, nun hoffe ich, Du kannst damit etwas anfangen.
byteeater
***
Beiträge: 73
Registriert: So, 29.01.2006 13:37

Beitrag von byteeater »

Die VERGLEICH funktion hab ich erstmal. jedoch zeigts nicht an in welcher zeile der Bereich beginnt sondern WIEVIELE Zeilen den Wert haben.

=VERGLEICH(C3;PSM.A1:A32000)

C3 ist 100-1

in der Tabelle PFLANZENSCHUTZ (PSM) steht im Bereich A1:A32000 die Bezeichnung 1-1 zB. 10 mal

dann zeigt mir obige Formel

10


deine unteren Ausführungen habe ich nicht so ganz kapiert :oops:


also die Tabelle mit den Pflanzenschutzeintragungen heißt PSM
die Feldbezeichnung liegt in Zelle C3 der Tabelle 1-1 ( also Feld 100-1)

die Formel =VERGLEICH(C3;PSM.A1:A32000 liegt in Zelle A25 der Tabelle 1-1

der Bereich in den die Daten für Pflanzenschutzmaßnahmen eingetragen werden liegt in Tabelle PSM B3 bis Q13

Vielleicht können wir uns gleich auf meine konkreten Zellen beziehen? dann fällts mir vielleicht leichter die gedankengänge nachzuvollziehen.

wo muß deine Beispielformel hin (="$Tabelle1.B"&C1&":F"&(C1+5) )
und wo muß die DDE Formel hin

sorry und nochmals Danke für die hilfestellung
Eia
********
Beiträge: 2614
Registriert: Sa, 23.12.2006 07:40

Beitrag von Eia »

byteeater hat geschrieben:Die VERGLEICH funktion hab ich erstmal. jedoch zeigts nicht an in welcher zeile der Bereich beginnt sondern WIEVIELE Zeilen den Wert haben.

=VERGLEICH(C3;PSM.A1:A32000)

C3 ist 100-1

in der Tabelle PFLANZENSCHUTZ (PSM) steht im Bereich A1:A32000 die Bezeichnung 1-1 zB. 10 mal

dann zeigt mir obige Formel

10
Du hast einen Parameter dieser Funktion weggelassen:
=VERGLEICH(C3;PSM.A1:A32000;0)
Mit der Null am Schluss bekommst Du die Position des ersten Vorkommens des Suchbegriffes
also die Tabelle mit den Pflanzenschutzeintragungen heißt PSM
die Feldbezeichnung liegt in Zelle C3 der Tabelle 1-1 ( also Feld 100-1)

die Formel =VERGLEICH(C3;PSM.A1:A32000 liegt in Zelle A25 der Tabelle 1-1

der Bereich in den die Daten für Pflanzenschutzmaßnahmen eingetragen werden liegt in Tabelle PSM B3 bis Q13

Vielleicht können wir uns gleich auf meine konkreten Zellen beziehen? dann fällts mir vielleicht leichter die gedankengänge nachzuvollziehen.

wo muß deine Beispielformel hin (="$Tabelle1.B"&C1&":F"&(C1+5) )
und wo muß die DDE Formel hin
Ich fasse zusammen:
Der Bereich aus der Pflanzenschutztabelle, den Du anzeigen möchtest, geht bis Spalte Q
die Vergleich-Formel in Tabelle 1-1 steht in Zelle A25
Also heisst die zweite Hilfsformel:
="$PSM.B"&A25&":F"&(A25+X)
Das X musst Du noch ersetzen durch die Anzahl Zeilen, die Du aus der Pflanzenschutztabelle anzeigen möchtest. Diese Formel schreibst Du in Tabelle 1-1 in eine freie Zelle. Man kann die beiden aber auch zusammenfassen:
Wenn Du in der zweiten Formel A25 jeweils ersetzt durch die Formel, die jetzt in A25 steht, dann bekommst Du das:
="$PSM.B"&VERGLEICH(C3;PSM.A1:A32000;0)&":F"&(VERGLEICH(C3;PSM.A1:A32000;0)+X)

Nehmen wir an, diese Formel steht nun in A25 und liefert ein Ergebnis wie:
$PSM.B3:Q13

Nun musst Du die Matrixformel in 1-1 dorthin setzen, wo Du den Bereich aus der Pflanzenschutztabelle angezeigt haben möchtest:
{=DDE("soffice";"/home//Pflanzenschutz.ods";A25)}
byteeater
***
Beiträge: 73
Registriert: So, 29.01.2006 13:37

Beitrag von byteeater »

wow :lol:

nicht nur daß ich deinen ausführungen folgen konnte , ich hab auch begriffen was wieso da abläuft wenn ein & oder ein" steht :-) . jetzt fällts mir viel leichter die zusammenhänge zu erkennen!

DAFÜR MÖCHTE ICH DIR HERZLICH DANKEN !!!!!

achja und funktionieren tuts tadellos :D

vielen dank
Bernd
Eia
********
Beiträge: 2614
Registriert: Sa, 23.12.2006 07:40

Beitrag von Eia »

Was Du zu der Matrixformel noch wissen solltest:
Wenn man sie nachträglich bearbeiten will, muss man alle Zellen markieren, in die sie eingefügt wurde, nicht etwa nur die erste Zelle wie beim Erstellen der Formel.
Sie aktualisiert sich zwar inhaltlich, wenn Daten geändert wurden, aber sie würde nicht automatisch die Anzahl Zeilen/Spalten ändern, die beim ersten einfügen estellt wurden. Wenn die Bereichsgrösse ändern sollte, musst Du die Ausdehnung der Matrix von Hand anpassen. Du kannst es einmal ausprobieren, indem Du den gesamten Matrix-Bereich markierst, dann die rechte untere Ecke des markierten Bereichs packst und verschiebst, also grösser oder kleiner machst.
byteeater
***
Beiträge: 73
Registriert: So, 29.01.2006 13:37

Beitrag von byteeater »

Ich möchte die Sache gern noch weiter führen und habe eine weitere Tabelle im Dokument FELD erstellt .
Dort stehen alle Feldstücksbezeichnungen in einer Spalte untereinander aufgereiht. Jede Feldstücksbezeichnung ist einmalig jedoch die Anzahl der Feldstücksbezeichnungen ist variabel. sonst steht in der Spalte nichts.
Ist es möglich, die Anzahl der Feldstücksbezeichnungen zu zählen auch wenn kein fester Bereich festlegbar ist?
Und gemäß dieser Anzahl hätte ich gern in meiner Tabelle PSM die gleiche Anzahl an Bereichen "hereinkopiert", in die ich dann die Maßnahmen eintragen kann. JEDER Bereich soll die Feldstücksbezeichnung EINES Feldstückes tragen.
Ob sowas geht?

lg Bernd
Eia
********
Beiträge: 2614
Registriert: Sa, 23.12.2006 07:40

Beitrag von Eia »

byteeater hat geschrieben:Ich möchte die Sache gern noch weiter führen und habe eine weitere Tabelle im Dokument FELD erstellt .
Dort stehen alle Feldstücksbezeichnungen in einer Spalte untereinander aufgereiht. Jede Feldstücksbezeichnung ist einmalig jedoch die Anzahl der Feldstücksbezeichnungen ist variabel. sonst steht in der Spalte nichts.
Damit wir vom Gleichen reden - sieht das in etwa so aus:

Code: Alles auswählen

Spalte 1      Spalte 2
Hirschwiese	1-1
Hirschwiese	1-2
Hirschwiese	1-3
Ist es möglich, die Anzahl der Feldstücksbezeichnungen zu zählen auch wenn kein fester Bereich festlegbar ist?
Meinst Du sowas:
=ZÄHLENWENN($A$1:$A$3;"Hirschwiese")
das kann getrost auch so aussehen:
=ZÄHLENWENN($A$1:$A$3000;"Hirschwiese")
Und gemäß dieser Anzahl hätte ich gern in meiner Tabelle PSM die gleiche Anzahl an Bereichen "hereinkopiert", in die ich dann die Maßnahmen eintragen kann. JEDER Bereich soll die Feldstücksbezeichnung EINES Feldstückes tragen.
Ob sowas geht?

Wir können am vorigen Beispiel weitermachen. Da wissen wir ja schon dass man mit
=VERGLEICH("Hirschwiese";Tabelle.A1:A32000;0) das erste Vorkommen von "Hirschwiese" bekommt.
Mit:
=VERGLEICH("Hirschwiese";Tabelle.A1:A32000;1) bekommt man das letzte vorkommen.
Die Differenz von beidem müsste die Anzahl Zeilen sein, die Du für Deinen Bereich brauchst. (Oder Du benutzt stattdessen die oben erwähnte ZÄHLENWENN-Funktion)
Und der Rest ist wieder eine DDE-Formel wie im ersten Fall.
Kannst Du damit etwas anfangen? Muss mich für den Rest des Tages leider abmelden.

PS: so bekommst Du eine Zeile pro Feldstück, ich weiss nicht, ob das in Deinem Sinn ist.
byteeater
***
Beiträge: 73
Registriert: So, 29.01.2006 13:37

Beitrag von byteeater »

Ich habs jetzt soweit, daß mir die genaue Anzahl von Feldstücken ausgegeben wird.

zum zweiten Teil der "aufgabe":-)

nochmal zur Verdeutlichung:

in der Tabelle PSM soll für jedes Feldstück EIN eigener Bereich mit 13 Zeilen und 19 Spalten (also bis S) entstehen.

Dieser Bereich muß so oft "zu sehen" sein, wie die Anzahl der Feldstücke.
Also: 25 Feldstücke entsprechen 25 Bereichen a' 13Zeilen*19 Spalten. Die Bereiche sollen untereinander aufgereiht sein.

Jeder Bereich muß mit einer Feldstücksbezeichnung versehen sein.
Also 25 Feldstücke entsprechen 25 Feldstücksbezeichnugen entsprechen 25 Bereichen in der Tabelle PSM .
Und jeder der 25 Bereiche erhält genau EINE der 25 Feldstücksbezeichnungen. Es darf keine doppelt vorkommen.

:-D gibts vielleicht eine formel in dieser art:

erstelle gemäß der Anzahl der Feldstücken die gleiche der Anzahl Bereiche,ordne diese untereinander an und vergib jedem bereich einen der 25 Feldstücksbezeichnungen. :-D

lg bernd
Eia
********
Beiträge: 2614
Registriert: Sa, 23.12.2006 07:40

Beitrag von Eia »

byteeater hat geschrieben: gibts vielleicht eine formel in dieser art:

erstelle gemäß der Anzahl der Feldstücken die gleiche der Anzahl Bereiche,ordne diese untereinander an und vergib jedem bereich einen der 25 Feldstücksbezeichnungen.
Nur kurz:
Man kann keine Bereiche mit Formeln erstellen.
Man kann mit einer Formel nur etwas herienholen, was es anderswo schon gibt: einzelne Zellen oder - wie in unserem Beispiel mit DDE - einen Bereich.
Mit dem Verfahren, dass wir bisher hatten, könntest Du die Liste mit den Feldstücken herienholen, also z.B. 25 Zeilen, in denen jeweils die Feldnummer steht.
Aber Du kannst nicht irgendwie automatisiert 25 Bereiche, die aus mehreren Zeilen/Spalten bestehen neu kreieren. Die müssten schon so irgendwo vorhanden sein, damit Du sie Dir hereinholen kannst.
byteeater
***
Beiträge: 73
Registriert: So, 29.01.2006 13:37

Beitrag von byteeater »

gut zu wissen !

und wenn ich einen Bereich erstmal erstelle und leer lasse, sozusagen als Schablone auf die die Formel zugreift. und jenachdem wieviele Feldstücken in der
Liste Feldstücken eingetragen sind, so oft wird die Schablone kopiert. Das Bezeichnen muß ich halt dann per Hand machen.

oder andersrum wäre auch denkbar : die Bereiche in ausreichendem Maß "vorfertigen" per Hand und dann automatisch die Feldstücksbezeichnungen eintragen lassen.

Wäre das ein gangbarer Weg?

Bernd
Eia
********
Beiträge: 2614
Registriert: Sa, 23.12.2006 07:40

Beitrag von Eia »

byteeater hat geschrieben: und wenn ich einen Bereich erstmal erstelle und leer lasse, sozusagen als Schablone auf die die Formel zugreift. und jenachdem wieviele Feldstücken in der
Liste Feldstücken eingetragen sind, so oft wird die Schablone kopiert.
Wir müssen noch das Prinzip der Tabellenkalkulation klären:
Eine Zelle kann per Formel sagen: ich hole mir den Inhalt einer anderen Zelle (egal, ob der leer ist oder etwas enthält)
Die Matrix-Formel macht das gleiche, darum breitet sie sich bei Eingabe eines Bereichs auch gleich auf soviele Zellen aus, wie der importierte Bereich enthält. Jede dieser Zellen der Matrix fordert den Inhalt von genau einer anderen Zelle an.

Man kann keine Kopien veranlassen. Dort, wo Du Dir die Kopie vorstellst, muss in jeder Zelle eine "Holen"-Funktion stehen. Wenn Du drei Kopien einer Zelle brauchst, muss Du drei Zellen anlegen, und in jeder Zelle steht eine Formel, z.B. =TabelleA.A3.
Auch die Matrix-Formel funktioniert so. Sie liefert Dir keine leeren Zellen sondern hat in jeder Zelle eine Formel stehen.

Ich weiss nicht, ob ich es verständlich erkläre. Aber solche Dinge wie automatisch neue Bereiche einfügen, das kann man höchstens mit Programmierung hinbekommen. Es ist nicht die normale Funktionsweise einer Tabellenkalkulation.
oder andersrum wäre auch denkbar : die Bereiche in ausreichendem Maß "vorfertigen" per Hand und dann automatisch die Feldstücksbezeichnungen eintragen lassen.
Ja, da gibt es eher Möglichkeiten. Ändert denn die Anzahl von Feldstücken pro "Flurstück"? Oder ist die einmal getroffene Einteilung konstant? Was genau soll nenn "automatisch" in der PSM auftauchen? Nützt Dir die Liste der Feldstücke etwas?

Grundsätzlich habe ich langsam den Eindruck, was Du hier entwirfst, ist eigentlich eine Datenbank und nicht unbedingt eine Tabellenkalkulationsaufgabe. Ich weiss, die Tabellenkalkulation ist schöner zum Arbeiten und man kommt auch leichter rein. Aber vielleicht solltest Du Dir trotzdem mal etwas reinziehen wie:
"Datenbanken mit OpenOffice.org 2" von Thomas Krumbein.
byteeater
***
Beiträge: 73
Registriert: So, 29.01.2006 13:37

Beitrag von byteeater »

:-)

ja kann sein daß mit der Zeit eher eine Datenbank nötig wäre !

angefangen habe ich mit einer einfachen tabelle für jedes Feldstück ohne jede Formel . und mit der Zeit wurde immer mehr gefeilt so wie das wissen gewachsen ist. naja nun sind wahrscheinlich die Ansprüche über die Möglichkeiten heraus gewachsen sind. Tut mir leid :-)

zu deinen Fragen:

Die Anzahl der Feldstücken pro Flurstück gibt es nicht. Es gibt nur Feldstücken. Zurzeit sind es 25 Stück . Diese sind in der Tabelle FELDSTÜCKEN in einer Liste untereinander aufgereiht. Diese Liste hab ich erstmal angelegt und muß sie "kürzen" oder erweitern" je nachdem wieviele Feldstücken in diesem Jahr bewirtschaftet werden.

Vielleicht kommen wir ja auf folgende Art weiter:

Ich bereite in der Tabelle PSM die Bereiche vor, (ich brauche für jede Pflanzenschutzmaßnahme eine Zeil und mehrere Spalten, und über das Jahr werden maximal 10 Pflanzenschutzmaßnahmen getätigt also brauche ich max. 10 Zeilen.

Ich könnte ja ein paar mehr solcher Bereiche schonmal erstellen, sagen wir 35 Stück damit noch etwas Reserve ist, falls doch mal ein paar Feldstücken dazu kommen. Die Bereiche wäre somit vorhanden und leer (werden übers jahr mit Daten gefüllt ). Damit jeder Bereich jetzt den Namen EINES Feldstückes bekommt müßte eine Zelle jedes Bereiches sozusagen in die Liste FELDSTÜCKEN schauen und sich dort den nächsten "freien" Namen heraussuchen.

zB. Wenn Bereich 1 den Namen des ersten Feldstücks (laut Liste in FELDSTÜCKEN )angenommen hat soll Bereich 2 den Namen der zweiten Feldstücks annehmen und so fort.
Vielleicht muß ja nicht jeder Bereich direkt in die Liste FELDSTÜCKEN zugreifen sondern nur nachschauen welche Feldstücksbezeichnung im vorigen Bereich genommen wurde und dann die nächste Bezeichnung in der Liste nehmen.

also entschuldigung für die Umstände, wenns nicht geht dann ists auch nicht so schlimm . aber leider kann ich das noch nicht so abschätzen da mir dazu die erfahrung und das tiefgreifende wissen fehlt.

trotzdem DANKE nochmal
Antworten