PDA

Vollständige Version anzeigen : Tabellen vergleichen vba


besserleben
30.06.2015, 22:04
Hallo zusammen,

Ich habe eine Excel in der ich dringend ein VBA brauchen würde.
Komm nicht drauf.

Es sind 2 Tabellen, die 1. Tabelle ist meine Tabelle zum späteren Drucken wo meine Enddaten stehen sollen.
Tabelle 2 kopiere ich von ner anderen Quelle einfach ein.

Es soll immer Spalte A und B vergliechen werden von Tabelle 1 und Tabelle 2
Wenn in Tabelle 2 ein Datensatz nicht mehr drauf zu Tabelle 1 soll in Tabelle 1 die Zelle grün werden, da ja der Datensatz in Tabelle 2 fehlt.

wenn in Tabelle 2 mehr Daten sind, soll das Makro es in Tabelle 1 dazuschreiben.

Hoffe es ist nicht verwierend.

Danke im vorraus.

MFG

besserleben

Beverly
01.07.2015, 08:35
Hi,

schau mal hier Tabellen vergleichen (http://hajo-excel.de/vba_allgemein1_T.htm) - vielleicht findest du da eine passende Lösung.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

besserleben
01.07.2015, 21:33
Hi Beverly,

nein hab nichts passendes gefunden.
Es soll sozusagen, die gleichen Kennummern vergleichen, was sich verändert hat zwischen den Tabellen.
Also vergleiche Kennnummern der 2 Tabellen, und ändere die Zelle der Kennummern.
wenn eine Kennnummern nicht mehr drauf ist, schreib Test in Bemerkung. so sollte es ungefähr laufen.

Danke im vorraus.

MFG
besserleben

besserleben
02.07.2015, 02:55
Hi,

Ich habe nochmal eine Excel angehängt.
Es soll die Excel Spalte C mit einem 2. Arbeitsmappe die genauso aufgebaut ist verglichen werden, aber 6 Stunden später.

Wenn die Nummer in C3 in der neuen gefunden wurde, soll der Fehler in Spalte G in die alte übernommen werden. sonst soll es markiert werden und in Fehler ein Text stehen.

und so soll die gesamte Spalte C verglichen werden.

gruss besserleben

Beverly
02.07.2015, 06:38
Hi,

und womit soll vergleichen werden?

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

besserleben
02.07.2015, 21:33
Hi,

Diese Excel speichere ich ab, und 6 Stunden später bekomme ich ne neue.
Die kennnummer soll verglichen werden und die Fehler ändern sich nach denen 6 Stunden.
Somit müsste ich beide Exel aufhaben um zu vergleichen.
Die Fehler sollen sozusagen aktualisieren.
Wenn kein Fehler mehr da ist oder die Kennnummer nicht mehr auftaucht, soll bei Fehler ein Text stehen.

Gibt es auch die Möglichkeit das ich in eine Excel das Makro habe, und wenn ich die beiden zu vergleichenden Excel einfach ne .xls ist, somit kein Makro oder .xlsm ist?
Müssten halt dann 3 Arbeitsmappen offen sein oder?

Gruß besserleben

Beverly
03.07.2015, 07:12
Hi,

da deine Daten mehrfach vorkommen - auf welche Zeile von den Mehrfachtreffern soll sich denn der Vergleich dann beziehen? Oder meinst du, dass die Werte überhaup in der anderen Tabelle mindestens 1 mal vorkommen? Und falls das 1malige Vorkommen zutreffend sein soll - welche Zeile von den Mehrfachtreffern in Tabelle AnlVerf1 soll dan gefärbt werden?
Eine Spalte "Fehler" finde ich bei dir nicht.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

besserleben
03.07.2015, 20:58
Hi,

Also, ich habe die Spalte Kennnummer,
Auf diese Zelle will ich mich beziehen.
Wenn ich 6 Stunden später die neue Excel aufmache, soll die neue und die alte verglichen werden.
Die neuen Daten sollen dann in die alte eingetragen werden.
Wenn in der neuen eine Kennnummer nicht mehr auftrifft. soll in einer Spalte, die ich noch bennenn werde mit Fehler, ein Text stehen und die Zelle grün werden.

Die Spalte K soll dann die Daten von der neuen Tabelle bekommen. Der Rest soll nicht überschrieben werden.

Gruss besserleben

Beverly
04.07.2015, 06:55
Hi,

deine 2. Mappe sieht völlig anders aus als deine erste.

Sub Vergleichen()
Dim wksQuelle As Worksheet
Dim lngZeile As Long
Dim rngZelle As Range
Set wksQuelle = Workbooks("Mappe2").Worksheets("Tabelle1")
For lngZeile = 3 To 21
Set rngZelle = wksQuelle.Columns(3).Find(Cells(lngZeile, 3).Value, lookat:=xlWhole)
If Not rngZelle Is Nothing Then
If Cells(lngZeile, 7) <> rngZelle.Offset(0, 4) Then Cells(lngZeile, 7) = rngZelle.Offset(0, 4)
Else
Cells(lngZeile, 8) = "Nicht vorhanden"
End If
Next lngZeile
End Sub


<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

besserleben
05.07.2015, 16:16
Hab dir mal die Orginal Datei hochgeladen.
so wie es ungefähr laufen soll.
in der Startdatei ist das Makro, hab eins schon mal drin, find ich nicht schlecht, es kontrolliert die Kennnummern.
Es müssen die Startdatei, Test 2 und Test 3 offen sein.
in der Test2 starte ich das Makro, und es durchsucht mir Test 2 und Test 3 nach veränderungen, leider sagt es mir im moment nur das die Kennummer ... nicht mehr vorhanden ist.
Test 2 ist meine 1. Datei die bleibt, Test 3 kommt 6 Stunden später, also soll in Test 2 die veränderungen sichtbar gemacht werden.

Das Makro soll jetzt sozusagen, wenn eine Kennnummer nicht mehr vorhanden ist, in Bemerkung nen Text schreiben in Test 2 und soll in Test 2 den EFS von Test 3 übernehmen.

Hoffe du kannst mir helfen beverly.

gruss besserleben

Beverly
05.07.2015, 18:31
Hi,

also welche Spalte soll nun mit welcher vergleichen werden und in welche Spalte soll aus welcher Spalte überommen werden?

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

besserleben
05.07.2015, 21:47
Hi,

Also es soll die Spalte C (3) verglichen werden und Die Spalte K (11) aktualisiert.

Wenn eine Kennnummer nicht mehr in Test 3 ist, soll in Test 2 in der Bemerkung Spalte L(12) ein Text stehen und die Zelle grün werden von Spalte B bis Spalte M, wenn geht.



MFG

besserleben

Beverly
06.07.2015, 07:22
Hi,

diesen Cdoe in ein allgemeines Modul der Startdatei.xlsm:

Sub Vergleich()
Dim wksQuelle1 As Worksheet
Dim wksQuelle2 As Worksheet
Dim lngZeile As Long
Dim rngZelle As Range
Set wksQuelle1 = Workbooks("test2.xls").Worksheets("Tabelle1")
Set wksQuelle2 = Workbooks("test3.xls").Worksheets("Tabelle1")
With wksQuelle1
For lngZeile = 3 To IIf(IsEmpty(.Cells(.Rows.Count, 2)), .Cells(.Rows.Count, 2).End(xlUp).Row, .Rows.Count)
Set rngZelle = wksQuelle2.Columns(3).Find(.Cells(lngZeile, 3).Value, lookat:=xlWhole)
If Not rngZelle Is Nothing Then
If .Cells(lngZeile, 7) <> rngZelle.Offset(0, 4) Then .Cells(lngZeile, 7) = rngZelle.Offset(0, 4)
Else
.Cells(lngZeile, 12) = "Nicht vorhanden"
.Range(.Cells(lngZeile, 2), .Cells(lngZeile, 13)).Interior.Color = 5287936
End If
Next lngZeile
End With
End Sub


<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

besserleben
06.07.2015, 14:04
Hi, Perfekt, bist die beste,

Nur eins macht er nicht.
Er aktualisiert nicht die Spalte K (11)

gruss besserleben

Beverly
06.07.2015, 14:10
Hi,

zu Beginn sollte mal Spalte G aktualisiert werden - oder?

Ändere diese Zeile:

If .Cells(lngZeile, 11) <> rngZelle.Offset(0, 8) Then .Cells(lngZeile, 11) = rngZelle.Offset(0, 8)


<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

besserleben
06.07.2015, 17:17
Super perfekt,

wenn ich noch ne 2. Spalte aktualisieren will?

gruss besserleben

Beverly
06.07.2015, 18:16
Hängt davon ab, was genau womit verglichen und was womit aktualisiert werden soll.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

besserleben
06.07.2015, 18:26
Sagen wir in dem Beispiel der Status. In der Excel Spalte H (8).
Somit würden beim durchlauf die Spalte H (8) und Spalte K (11) aktualisiert werden.

gruss besserleben

Beverly
06.07.2015, 18:35
Dann musst du das nur nach demselben Prinzip an der Stelle ergänzen wo der Code für das Eintragen in Spalte K steht.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

besserleben
07.07.2015, 01:51
Hallo beverly,

ich komme irgendwie nicht weiter. gruss besserleben

Beverly
07.07.2015, 07:26
Hi,

und worin genau liegt das Problem?

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

besserleben
07.07.2015, 15:00
Ehrlich gesagt ich stehe jetzt total auf dem Schlauch wo ich zum aktualisieren der 2. Spalte in das Macro schreiben muss.
Glaub muss mich verkriechen.

Gruss besserleben

Beverly
07.07.2015, 18:46
Ich würde denken, so:

If Not rngZelle Is Nothing Then
If .Cells(lngZeile, 11) <> rngZelle.Offset(0, 8) Then .Cells(lngZeile, 11) = rngZelle.Offset(0, 8)
If .Cells(lngZeile, 8) <> rngZelle.Offset(0, 5) Then .Cells(lngZeile, 8) = rngZelle.Offset(0, 5)
Else
.Cells(lngZeile, 12) = "Nicht vorhanden"
.Range(.Cells(lngZeile, 2), .Cells(lngZeile, 13)).Interior.Color = 5287936
End If


<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

besserleben
07.07.2015, 20:45
Danke, so einfach, aber ich war total auf dem schlauch gestanden.

Danke nochmal beverly

gruss besserleben