# Excel Arbeitsmappen vergleichen und ergänzen



## Rexinator (2. Februar 2010)

Hi,

Vorab ich muss das in OpenOffice machen..... naja.
Ich habe ein "kleines" Problemchen mit ein paar Excel dateien^^.. und zwar:
Ich habe eine große "Abrechnungen" Tabelle in der z.B. alle Abrechnungen eines Monats drin stehen.
Dann bekomme ich von einer anderen Quelle jede Woche eine andere Datei mit den Abrechungen der entsprechenden Woche.
Meine Aufgabe ist es jetzt die Gesamttabelle mit den einzelnen Tabellen abzugleichen und dann alle sich im "Endbetrag" unterscheidenden 
Zeilen zu markieren oder sie in eine neue Tabelle/Datei/Arbeitsmappe zu speichern.
Was noch dazu kommt ist dass die wöchendlichen Dateien nicht .ods sind sondern kommen als .560 dateien an die ich erst in .dbf umbenennen muss damit ich sie in OO öffnen kann.

Joar ich hoffe mir kann einer mit dem Problem helfen^^

Grüße und schon mal danke im vorraus


----------



## tombe (3. Februar 2010)

Das ist jetzt zwar nicht so ganz das was du haben willst, aber zumindest mal ein Anfang.

In der Datei enthält die Tabelle1 alle Abrechnungen und die Tabelle2 enthält die Daten der Wochenabrechnung. Alle unterschiedlichen Werte werden in Tabelle1 durch eine Formel in Spalte C eingetragen und durch bedingte Formatierung optisch hervorgehoben.

Damit das Hochladen klappt, habe ich der Datei "vergleich.ods" einfach noch die Endung ".TXT" angehängt. Also einfach umbenennen.

Vielleicht gibt dir das ja einen Denkanstoß

Gruß Thomas


----------



## Rexinator (4. Februar 2010)

Morgen,

Ne das hilft mir leider nicht viel weil bei mir ist es ja so dass Tabelle1 und 2 zwei unterschiedliche dateien sind und was ich halt nicht weiß ist
wie ich die importieren kann... bzw das soll ja später alles mehr oder weniger automatisch ablaufen.....

Gruß Rex


----------



## vfl_freak (4. Februar 2010)

Rexinator hat gesagt.:


> Ne das hilft mir leider nicht viel weil bei mir ist es ja so dass Tabelle1 und 2 zwei unterschiedliche dateien sind und was ich halt nicht weiß ist
> wie ich die importieren kann... bzw das soll ja später alles mehr oder weniger automatisch ablaufen.....



Moin,

auch ich bin nicht sicher, dass genau verstanden habe, was Du meinst, aber vermutlich solltest eine neue, dritte Tabelle aufmachen und von dort einfach auf die beiden ursprünglichen verweisen! Genauso, wie Du bspw. von _Blatt1_ auf _Blatt5_ verweisen kannst, kannst Du auch von _TabelleA.Blatt1_ auf _TabelleB.Blatt5_ verweisen und die Werte kopieren oder nur damit rechnen.

Automatisieren würde ich das Ganze dann bspw. über ein nettes Makro in Tabelle 3 

Gruß
Klaus


----------



## Rexinator (4. Februar 2010)

Hey ich hab mich mal angemeldet^^

Ich bin euch zwar dankbar dass ihr mir helfen wollt nur schaff ich es noch nicht mal den Befehl von tombe nachzubaun weil excel mir immer sagt, dass ich einen Fehler da drin hab und makiert mir das "Tabelle2.§A§1"....

Und wie genau würde das aussehen wenn ich jetzt in einer 3. Tabelle alle unterschiede von _TabelleA.Blatt1_ und _TabelleB.Blatt1_ anzeigen wöllte? Also zB nur die Seriennummer und den Wert.


----------



## vfl_freak (4. Februar 2010)

Rexinator hat gesagt.:


> Hey ich hab mich mal angemeldet^^


Prima 



Rexinator hat gesagt.:


> Ich bin euch zwar dankbar dass ihr mir helfen wollt nur schaff ich es noch nicht mal den Befehl von tombe nachzubaun weil excel mir immer sagt, dass ich einen Fehler da drin hab und markiert mir das "Tabelle2.§A§1"....


Also, mit das Beispiel kann ich so aus dem Stand nicht öffnen, allerdings müsste es wohl statt "_Tabelle2.§A§1_" "*Tabelle2.$A$1*" heißen!
Durch das Dollar-Zeichen wird der Verweis quasi als "unveränderlich" fixiert (und somit bspw. gegen das Einfügen von Zeilen und damit verbundenem relativen Verschieben geschützt). Um das Einzugeben musst Du übrigens in der Eingabezeile den Cursor auf die Zellenbezeichnung stellen und dann einfach <F4> drücken 



Rexinator hat gesagt.:


> Und wie genau würde das aussehen wenn ich jetzt in einer 3. Tabelle alle unterschiede von _TabelleA.Blatt1_ und _TabelleB.Blatt1_ anzeigen wöllte? Also zB nur die Seriennummer und den Wert


Um den Wert einer Zelle aus einer anderen Datei zu referenzieren, wäre die Syntax dann etwa so :
*=+[Test_1.xls]Tabelle1!$A$5*

Fügt also den Wert der Zelle _*A5*_ aus dem Blatt *Tabelle1* der Datei _*Test_1.xls*_ ein !

*[EDIT]* : Wichtig dabei: Du kannst dies auch per Maus erledigen (so als wenn es in anderes Tabellenblatt der gleichen Datei wäre)! Allerdings müssen dann alle relevanten Dateien auch geöffnet sein ! ! !

Gruß
Klaus


----------



## Rexinator (4. Februar 2010)

> Also, mit das Beispiel kann ich so aus dem Stand nicht öffnen, allerdings müsste es wohl statt "Tabelle2.§A§1" "Tabelle2.$A$1" heißen!


Ups da hab ich mich beim Post verschrieben^^ ich hab das schon als $....

Das mit dem importieren aus anderen Dateien hab ich soweit hinbekommen, was ich noch nicht verstehe ist dieser riesige Befehl den tombe oben gemacht hat...
Das Problem ist auch dass ich nie wirlich viel in Excel programmiert hab....
Also am besten wär wenn ich n bissl hilfe dahingehen bekommen könnte, dass ich in einer 3. Tabelle alle sich unterscheidenen Daten aus Tabelle1 und 2 sammle und Anzeige.

[EDIT1]: Also bei dem Befehl wird mir die mitte als Fehler makiert wo das ;''''; steht... ka was das bedeuten soll 

[EDIT2]: Und kann ich iwie den Pfad bestimmen wo er die .xls suchen soll weil der sucht immer automatisch in Eigene Dateien


----------



## tombe (4. Februar 2010)

Hi Rex,

ich bin ein bisschen verwirrt. Ganz oben schreibst du du müßtest das mit OpenOffice machen und nun schreibst du das die Formel von mir nicht mit Excel funktioniert.
Wenn du dich nun mal festlegst womit du das machen mußt, dann wird es einfacher dir zu helfen.

Bin gerade dabei in Excel etwas zu entwerfen. Kann aber nicht versprechen wie schnell ich es hinbekomme.

Gruß Thomas

Ach so noch was zu der Formel:

=WENN(ISTNV(SVERWEIS($A1;Tabelle2!A:B;2;0));"";SVERWEIS($A1;Tabelle2!A:B;2;0))

Wenn beim Vergleichen kein Treffen gefunden wird, gibt der SVERWEIS eigentlich den Fehler "NV#" zurück. Um das zu unterdrücken wird mit ISTNV geprüft ob dieser Fehler zurückgegeben wird. WENN dieser Fall eintritt, dann wird nichts (deshalb die "") zurückgegeben, wenn kein Fehler auftritt, dann wird der SVERWEIS durchgeführt.

Hoffe du hast die Formel verstanden!!
Kannst ja mal deine Datei hier einstellen, dann schau ich mal ob ich da was daraus machen kann


----------



## Rexinator (4. Februar 2010)

OK ich verstehe das du verwirrt bist^^ weil:
Ich muss das schon in OO machen nur bin ich zZ im Büro wo ich kein OO habe.... ich wusste nur nicht dass sich schon beim Sverweis die Befehle sich unterscheiden...
Es wär denk ich ma gut wenn ich wüsste wie genau sich das unterscheidet.
Also wenn ich jetzt deinen Befehl bei Excel eingebe und Enter drücke popt eine Fehlermeldung auf die mir sagt dass ich in dem Befehl einen Fehler hab und wenn ich das mit OK bestätige makiert der mir die ''''.... (zum Verständnis das sind doch 4 ' (Hochkomma) oder sind das 2 " (Anführungszeichen))

[EDIT]: OK er nimmt jetzt den Befehl an^^ (ich hab das immer mit 4 ' anstatt mit 2 " gemacht) NUR.... zeigt er mir die Ausgabe nicht so an wie bei deinem Beispiel oben sondern zeig mir einfach nur den inhalt der 2. Tabelle....
Das mit dem Hochladen weiß ich nicht ob das geht weil hier ist alles sehr streng wenns darum geht sachen hoch- oder runterzuladen, dass müsste ich wenn nach Dienst bei mir an meinem Rechner machen.


----------



## tombe (4. Februar 2010)

Was meinst du mit er zeigt mir nur den Inhalt der Tabelle 2 an Meinst du das er das nicht rot, fett und kursiv darstellt?

Dazu habe ich bei diesen Feldern noch eine bedingte Formatierung (als Formel) eingegeben: "=$B1<>$C1". Wenn die Beträge in den Spalten B und C stehen


----------



## Rexinator (4. Februar 2010)

Also ich habs jetzt soweit das der Vergleich funtioniert...
Nur zur Zeit hab ichs so das ich es aus dem 2.Blatt verglichen wird, ich denke aber dass ich das relativ einfach ändern kann.
Vielen dank für die Hilfe euch zwei^^
Ich lass das Thema aber noch offen weil soweit ich weiß muss ich da später noch einiges mehr reinmachen und ich denke dass ich da dann wieder ein paar Fragen stellen werde bei denen ich warscheinlichnochmal eure Hifle brauche. 

Noch eins:
Wie genau unterscheidet sich jetzt der Befehl von Excel und OO?

PS: die 203 ganz rechts is nur ein Versuch von mir einen Wert aus einer anderen Datei anzuzeigen^^


----------



## tombe (4. Februar 2010)

So auf die schnelle unterscheidet sich die Schreibweise nur Excel:
=WENN(ISTNV(SVERWEIS($A1;Tabelle2!A:B;2;0));"";SVERWEIS($A1;Tabelle2!A:B;2;0))

OO:
=WENN(ISTNV(SVERWEIS($A1;Tabelle2.A1:B100;2;0));"";SVERWEIS($A1;Tabelle2.A1:B100;2;0))

Wo bei Excel hinter Tabelle2 ein Ausrufezeichen hinkommt verlangt OO einen Punkt und bei Excel reichts es wenn du schreibst "A:B", OO verlangt die genaue Adresse "A1:B100".


----------



## Rexinator (8. Februar 2010)

Morgen,

Ich hab grad mal probiert ob ich die Vergleichswerte aus einer anderen Datei einlesen kann.... nur bekomm ich die nicht in den Befehl rein.
Wenn ich nur auf ein Feld so zugreife funktioniert es mit:

```
=[Moped2.xls]Tabelle1!B5
```

Das hab ich jetzt so in den Code eingefügt:

```
=WENN(WENN(ISTNV(SVERWEIS($A2;[Moped2.xls]Tabelle1!A:B;2;0));"";SVERWEIS($A2;[Moped2.xls]Tabelle1!A:B;2;0))<>B2;WENN(ISTNV(SVERWEIS($A2;[Moped2.xls]Tabelle1!A:B;2;0));"";SVERWEIS($A2;[Moped2.xls]Tabelle1!A:B;2;0));"")
```

Nur funktioniert das hier nicht. 

PS: Das 2. Wenn am anfang is nur dafür da, dass wenn die Werte übereinstimmen die Zelle leer gelassen wird.

Gruß

[EDIT]: Jetzt gehts auf einmal


----------



## Rexinator (8. Februar 2010)

Wie oben schon gesagt funtioniert die Formel jetzt auf einmal.... hm naja...^^

Mein nächstes Problem ist jetzt dass ich das ganze zur Zeit sehr hardcodiert hab mit den Tabellen usw....
Was ich jetzt gern hätte wär dass ich wie in dem Bild die einzelnen Tabellen angeben kann die dann die Formel aus den Feldern ausließt.

Zum Verständnis:
Moped1 ist die Haupttabelle in der alle werte von 200 bis 220 stehen.
In Moped2 stehen die Werte von 200 bis 209.
In Moped3 die Werte von 210 bis 220.


----------



## vfl_freak (8. Februar 2010)

Moin,

Du möchtest also nicht sowas eingeben 

```
=[Moped2.xls]Tabelle1!B5
```

sondern den Tabellennamen "Moped2.xls" bspw. in Zelle A23 schreiben und von dort referenzieren 

```
=[a23]Tabelle1!B5
```




Das geht nicht, da 'A23' kein gültiger Tabellenname wäre ! !

Gruß
Klaus


----------



## Rexinator (8. Februar 2010)

Und wie schaff ich es dann, die Tabellen, aus denen ich die Werte auslese so dynamisch wie möglich zu machen?
Weil jetzt müsste ich ja in dem Befehl jede einzelne Stelle manuell ändern wenn ich ne neue Tabelle bekomm.....

Es ist ja so das ich immer neue Tabellen bekomme, die mit meinem "Programm" in spe verglichen werden sollen.


----------



## vfl_freak (8. Februar 2010)

Moin,
ich denke nicht, dass dies so dynamisch zu regeln ist, wie Du es gerne hättest!
Genauso wenig kannst Du die Abgabe einer bestimmten Zelle dynamisieren, indem Du die Buchstaben und Ziffern in getrennten Zellen anlegst und dann mit bspw. <Zelle mit BU><Zelle mit ZI> zusammenpappst!

Gruß
Klaus


----------



## Rexinator (8. Februar 2010)

Es gibt doch mit Sicherheit irgendeine Lösung um das dyniamischer zu machen?
Ist ja nicht so dass ich der erste bin der auf so eine Idee kommt oder?


----------

