Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1400to1404
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeilen vergleichen ob änderungen oder neu

Zeilen vergleichen ob änderungen oder neu
20.01.2015 13:57:21
Laser
Hallo Leute,
Ich hab mich da in was verrant und komm nicht mehr weiter, vielleicht habt ihr eine andere möglichkeit die ich probieren könnte.
Ich habe 2 Tabelle mit Materialien die möchte ich miteinander vergleichen welcher Artikel hat sich geändert oder welcher ist noch nicht vorhanden.
Ich hab mir gedacht ich nemme für jeden Artikel eine eigene interne nummer.
Dann tu ich mir leichter im vergleichen, aber irgentwie stehe ich an.
In Spalte V füge ich Per Formel jeden zellinhalt zu einer langen schlange zusammen
=WENN(G6="";"";A6&G6&B6&C6&D6&E6&F6&H6&I6&J6&K6&L6&M6&Q6&S6)
In Spalte W Das selbe aus der Haupttabelle
=WENN(A6="";"";'Artikel Möbel'!A8&'Artikel Möbel'!G8&'Artikel _
Möbel'!B8&'Artikel Möbel'!C8&'Artikel Möbel'!D8&'Artikel Möbel'!E8&'Artikel _ Möbel'!F8&' _
Artikel Möbel'!H8&'Artikel Möbel'!I8&'Artikel Möbel'!J8&'Artikel _
Möbel'!K8&'Artikel Möbel'!L8&'Artikel Möbel'!M8&'Artikel Möbel'!Q8&'Artikel _
Möbel'!S8)
In Spalte X kontrolliere ich dann welchen Artikel es noch nicht gibt
=WENN(ZÄHLENWENN($V$6:$V$12;$W6)=0;"Nicht vorhanden in v";"aktuell")
=WENN(ZÄHLENWENN($W$6:$W$12;$V6)=0;"Nicht vorhanden in w";"aktuell")
Allerdings zeigt es mir dann auch die Artikel an wo sich nur geändert haben und nicht neu sind. und ich muss wissen welche sich geändert haqben und welche neu sind.
Ich hoffe ich konnte es ein bischen verständlich erklären.
Hier noch die Tabelle
https://www.dropbox.com/s/m14v8fltcdw0ma6/test%20vergleich%20Material.xls?dl=0
mfg
Jürgen

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
kein Dropbox
20.01.2015 14:37:03
Klaus
Hallo Jürgen,
ich lade nichts von Dropbox oder anderen externen Hostern. Wieso sollte ich, wenn stattdessen du auf Herber die Datei hochladen kannst?
Grüße,
Klaus M.vdT.

nun mit Herber Download
20.01.2015 14:52:46
Laser
Hallo Klaus
Sorry alte Gewohnheit weil meine excel datein meistens grösser als 300kb sind lade ich sie mit meiner Dropbox hoch.
Aber hier nun der Link vom Forum
https://www.herber.de/bbs/user/95124.xls
mfg
Jürgen

Beispiel bitte
20.01.2015 14:55:39
Klaus
Hallo Jürgen,
gib mal bitte ein Beispiel in der Mustertabelle, wo sich ein Artikel geändert hat und woran man das erkennt.
LG,
Klaus

Anzeige
AW: Beispiel bitte
20.01.2015 14:58:46
Laser
Hallo Klaus
In Tabelle "Datenabgleich Artikel" Zelle K9 hat sich geändert zur Hauptdatei dort ist sie leer
mfg
Jürgen

AW: Beispiel bitte
20.01.2015 15:05:04
Klaus
Jürgen,
ich gehe davon aus, die "Interne Nr" ist eindeutig. Setze eine bedingte Formatierung auf "Hintergrund rot" oder was dir sonst gefällt für den Bereich B6. Die Formel für die Formatierung lautet:
=SVERWEIS($A6;'Artikel Möbel'!$A:$O;SPALTE(B$1);)B6

Mit dem Formatpinsel bringst du diese Formatierung in der gesamten Datenabgleich-Tabelle an. Alle geänderten Zellen erscheinen jetzt rot.
Grüße,
Klaus M.vdT.

Anzeige
AW: Beispiel bitte
20.01.2015 15:33:12
Laser
Hallo Klaus
er bringt mir eine Fehlermeldung "Bezüge auf andere Tabellenblätter in bedingter Formatierung nicht erlaubt."
Ich muss nicht mal genau wissen wo die Änderung war, sondern nur das es eine gibt danach möchte ich per VBA die Zeile in die andere Mappe überschreiben, aber das kommt erst später. Erst ein mal das erste Problem hinbekommen.
wegen der Internen Nummer jaein ist nicht immer 100% eindeutig.
Es kann passieren das ich in einer anderen Tabelle was hinzufüge mit der gleichen nummer aber anderern Text bei Artikel. Dann sollte er mir es auch als neuen Artikel erkennen. Aber ob das geht keine Ahnung. Ich dachte mir schon das ganze mit mehreren Hilfsspalten zu machen.
mfg
Jürgen

Anzeige
AW: Beispiel bitte
20.01.2015 15:50:13
SF
Hola,
dann vergibt für den Bereich A:O im Blatt Artikel_Möbel einen Namen (Einfügen - Namen), z.B. Möbel. In der Formel dann:
=SVERWEIS($A6;Möbel;SPALTE(B$1);)B6
Gruß,
steve1da

AW: Beispiel bitte
20.01.2015 16:33:03
Laser
Hallo Steve1da
Danke das Klappt jetzt.
Jetzt weiss ich wo sich was geändert hat.
Wie kann ich aber in einer Spalte nun sagen dieser Artikel existiert, aber es gibt eine Änderung
Kann man eine Wenn Formel auf eine Hintergrundfarbe anwenden?
mfg
Jürgen

AW: Beispiel bitte
20.01.2015 16:37:46
SF
Hola,
nein, nicht mit reinen Formeln. Aber du kannst doch die Formel einfach in eine Zelle schreiben.
Gruß,
steve1da

Anzeige
AW: Beispiel bitte
20.01.2015 16:43:58
Laser
Ja das mache ich gerade.
Das heist aber ich muss für jede Spalte eine eigene Formel nehmen Oder?
=SVERWEIS($A6;Artikel_Möbel;SPALTE(A$1);)A6
=SVERWEIS($A6;Artikel_Möbel;SPALTE(B$1);)B6
=SVERWEIS($A6;Artikel_Möbel;SPALTE(C$1);)C6

usw. bis Spalte AO
Und anschliesend die ganze Zeile durchsuchen lasen nach dem Wert WAHR dann weiss ich das sich was geändert hat bei dem Artikel stimmt das?
mfg
Jürgen

AW: Beispiel bitte
20.01.2015 19:32:30
Laser
Hallo Leute
Hab nun die ganzen vergleiche zusammenbekommen, Danke nochmal für die Hilfe.
Jetzt habe ich noch ein Problem und zwar ich möchte gerne wenn in "Tabelle Datenabgleich" in Spalte AR bei Artikel 01-00004 änderung steht, diesen Artikel in der "Artikel Tabelle" mit der gleichen Artikelnummer überschreiben und wenn "Tabelle Datenabgleich" in Spalte AR bei Artikel 01-00130 neu steht dann soll er die letzte leere Zeile suchen und einfügen.
Kopierbeich sollte dann z.B:Zeile B10:m10 und Q10:S10 sein.
Hier noch die Datei zum ansehen
https://www.herber.de/bbs/user/95130.xls
Vielleicht hat jemand die Zeit sich das mal anzuschauen und kann mir einen Code oder einen Lösungsansatz geben.
Ich bedanke mich schon mal für eure Mühen
mfg
Jürgen

Anzeige
AW: Beispiel bitte
21.01.2015 07:51:05
Klaus
Hallo Jürgen,
enschuldige bitte, bei meiner Lösung habe ich deine Excel-Version nicht beachtet. An dieser Stelle etwas Werbung: xl 2003 ist schon zwölf Jahre alt! Die modernen Versionen bieten viele neue komfortable Möglichkeiten, bedingte Formatierung über verschiedene Blätter ist nur eine davon. Vielleicht ist es Zeit aufzurüsten? Werbung Ende :-)
Für deine erste Aufgabe, die Änderungen zu übertragen, sollte dieses Makro herhalten:
Sub AenderungenInArtikelUeberschreiben()
Const SpalteAenderung As Long = 42          'in Spalte AP suchen
Const ZeileAenderungAb As Long = 6          'ab Zeile 6 prüfen - darüber sind Überschriften
Const WortAenderung As String = "änderung"  'nach diesem Wort prüfen
Const SpalteAb As Long = 1                  'ab Spalte A kopieren
Const SpalteBis As Long = 19                'bis Spalte S kopieren
Const SpalteIndex As Long = 1               'Interne Nummer in Spalte A
Const TabQuelle As String = "Datenabgleich Artikel"  'Blattname
Const TabZiel As String = "Artikel Möbel"            'Blattname
Dim r As Range
Dim ZeileBis As Long
Dim ZeileZiel As Long
Application.ScreenUpdating = False
With Sheets(TabQuelle)
ZeileBis = .Cells(.Rows.Count, SpalteAenderung).End(xlUp).Row
If Not ZeileBis 

Läuft das durch, wird jede Zeile mit "Änderung" in das "Artikel Möbel" Blatt an die richtige Zeile kopiert. Danach hast du theoretisch keine Änderungen mehr im Datenabgleich.
In der Mustertabelle ist das anders, da kommt die Nummer 01-00002 doppelt vor (Zeile 7 und Zeile 11). Das Makro kopiert erst Zeile 7, danach Zeile 11 - beide in die Ziel-Zeile 9, wo die Nummer hin gehört. Danach ist natürlich eins von beiden wieder mit dem "Änderung" Label versehen ... aber ich nehme an, das ist ein Fehler in deiner Mustertabelle.
Deine nächste Aufgabe verstehe ich nicht:
Spalte AR bei Artikel 01-00130 neu steht dann soll er die letzte leere Zeile suchen und einfügen
01-00130 gehlärt doch in Artikel Möbel in Zeile 38, oder? DIe letzte leere Zeile ist aber Zeile 443. Willst du wirklich die Nummer 01-00130 in 'Artikel Möbel'!A443 eingefügt haben, so dass es dort eine doppelte Indexnummer gibt und die Reihenfolge nicht mehr stimmt, oder hast du dich nur unklar ausgedrückt?
Grüße,
Klaus M.vdT.

Anzeige
AW: Beispiel bitte
21.01.2015 20:21:39
Laser
Hallo Klaus
Sorry für die späte Antwort!
Hatte Stress in der Firma und noch keine zeit gehabt dein Code zu testen. Ich versuch das Morgen Abend zu erledigen dann gehe ich auf deine Fragen ein.
Bin im Moment noch auf Arbeit.
Aber schon mal vielen Dank für die Mühe die du hattest.
Achja das mit der neun Version habe ich auch schon öfter überlegt, aber bin ein Gewohnheitsmensch solange es funktioniert passt es :-) mein Partner hat 2013 aber damit komme ich in erster Linie nicht klar, aber mal schauen vielleicht besorge ich mir im Sommer ein neues Excel. Dort steht ein neuer CAD PC an dann könnte man das in einem abwasch machen :-)
mfg
Jürgen

Anzeige
AW: Beispiel bitte
22.01.2015 19:35:08
Laser
Hallo Klaus
Hab dein Makro gerade ausprobiert funktioniert super, und das beste ich versteh es bis zu 70% :-) wieder was gelernt.
Eigentlich ist in der Mustertabelle kein Fehler drin das ist gewollt das dort die zahlen doppelt vorkommen :-)
Kurze Erklärung:
Ich hab eine Vorlagendatei inkl. Material und Bestelltabelle.
Artikel kopieren aus Material in Bestelltabelle abspeichern.
Neuer Kunde selbes Spiel, es kommen Pro Kunde immer wieder mal neue Beschläge dazu (vorlaufende Artikel ergänzung).
Damit ich aber nicht immer händisch dann alles rüberkopieren muss in meine Vorlagendatei wollte ich diesen abgleich machen.
Artikel in die Vorlagendatei kopieren abgleichen und speichern.
jetzt kann es aber vorkommen das ich in der Zwischenzeit bei Kunde 1 (150 Artikel) habe und bei Kunde 2 (135 Stk.) diese sind dann ja schon in der Vorlagendatei hinterlegt. Wenn ich nun während dem Projekt bei Kunde 2, neue Artikel ergänze und dann den abgleich mache dann überspielt es mir ja bestehenden Artikel Nummern obwohl das eine ganz anderer Artikel ist.
Du wirst jetzt sicher Sagen Warum machst du nicht eine Separate Datei nur mit Materialien und Greifst beim Kopieren immer auf diese zu, dann ersparst du dir den abgleich.
Das wollte ich als erstes machen allerdings habe ich das nicht verstanden.
Eine Datei zu prüfen ob offen, dann material auswählen und in die andere Mappe zu kopieren.
Lediglich was ich geschaft habe Tabelle öffnen Artikel markieren dann per Makro kopieren mit abfrage in der anderen Tabelle wo hinkopieren, dann Abfrage ob noch ein Artikel wenn JA das selbe spiel.
Eigentlich dachte ich das der abgleich einfacher ist aber langsam sehe ich das dies doch nicht der Fall ist.
Das mit den Artikel wo neu gekennzeichnet sind, dachte ich eigentlich das er die letzte Zeile in Spalte G (Artikel) sucht und dort ohne Nr. Speichert. somit würde es auch keine doppelte Index Nummer geben. Allerdings würde das neu immer stehen bleiben da es keine passende nummer in dem Moment gibt. Das Makro würde also immer den gleichen Artikel kopieren bis die Nummer erreicht wurde. (so verstehe ich das jetzt).
Ich hoffe ich konnte das verständlich erklären und du hast eine Idee oder Lösung.
Falls du sagst das mit der separaten Datei ist viel leichter, dann zeige ich dir gerne den fertigen Code in einer Mustertabelle.
mfg
Jürgen

Anzeige
Sorry, ich komm gedanklich nicht nach
23.01.2015 08:22:52
Klaus
Hallo Jürgen,
TL;DR :-)
Nein, ernsthaft: irgendwann in der Mitte bin ich gedanklich ausgestiegen. Ich bin mir sicher der Code oder die Formel zur Lösung deines Problems ist relativ einfach, aber um das Problem zu verstehen müsste ich erst mal zwei Tage Betriebspraktikum bei dir machen und dazu habe ich grad keine Zeit ;-) Für mich hat eine Artikelnummer eindeutig zu sein, bei dir scheint das eher eine schwammige, Kundenveränderliche zufällige Zuordnung?
Im letzten Beitrag schrieb ich:
F: Spalte AR bei Artikel 01-00130 neu steht dann soll er die letzte leere Zeile suchen und einfügen
A: 01-00130 gehört doch in Artikel Möbel in Zeile 38, oder? Die letzte leere Zeile ist aber Zeile 443.

Ich kann dir gerne einen Code schreiben, der alle "Neu"en Artikel unterhalb Zeile 443 einfügt, bin aber immer noch sicher dass das nicht das ist was du möchtest. Oder?
Grüße,
Klaus M.vdT.

Anzeige
AW: Sorry, ich komm gedanklich nicht nach
23.01.2015 08:40:54
Laser
Hallo Klaus
:-) ja wäre cool wenn du zu mir kommen könntest dann würde ich mal live lernen wie was geht mit VBA.
ne ist eigentlich nicht so kompliziert nur ich weiss nicht wie ich das schreiben soll deshalb :-)
Du schreibst:
Für mich hat eine Artikelnummer eindeutig zu sein, bei dir scheint das eher eine schwammige, Kundenveränderliche zufällige Zuordnung?
Das ist korrekt da ich nicht ein Projekt nach dem anderen habe und deshalb die Artikel der reihe nach ergänzt werden.
Du schreibst
Ich kann dir gerne einen Code schreiben, der alle "Neu"en Artikel unterhalb Zeile 443 einfügt, bin aber immer noch sicher dass das nicht das ist was du möchtest. Oder?
Er soll die neuen Artikel in Zeile 38 einfügen das was immer eingetragen ist ist der Artikelname Die Nummer kopiere ich ja bis nach unten.
mfg
Jürgen

AW: Sorry, ich komm gedanklich nicht nach
23.01.2015 08:45:14
Klaus
Hi,
Er soll die neuen Artikel in Zeile 38 einfügen das was immer eingetragen ist ist der Artikelname Die Nummer kopiere ich ja bis nach unten.
Aber in A38 steht doch schon eine (fortlaufende) Artikelnummer. Soll die überschrieben oder beibehalten werden?
LG,
Klaus

AW: Sorry, ich komm gedanklich nicht nach
23.01.2015 09:05:20
Laser
hi
die soll beibehalten werden
mfg
Jürgen

AW: Sorry, ich komm gedanklich nicht nach
23.01.2015 09:25:04
Klaus
Hi Jürgen,
nach dem was ich verstanden habe vielleicht so?
Sub AenderungenInArtikelUeberschreibenUndNeuUntenDran()
Const SpalteAenderung As Long = 42          'in Spalte AP suchen
Const ZeileAenderungAb As Long = 6          'ab Zeile 6 prüfen - darüber sind Überschriften
Const WortAenderung As String = "änderung"  'nach diesem Wort bei Änderung prüfen
Const WortNeu As String = "neu"             'nach diesem Wort bei NEU prüfen
Const SpalteAb As Long = 1                  'ab Spalte A kopieren
Const SpalteAbNeu As Long = 2               'bei NEU: Ab Spalte B kopieren (Nummer in A  _
erhalten)
Const SpalteBis As Long = 19                'bis Spalte S kopieren
Const SpalteIndex As Long = 1               'Interne Nummer in Spalte A
Const SpalteNameZiel As Long = 7            'Spalte G ist immer bis zum Ende gefüllt
Const TabQuelle As String = "Datenabgleich Artikel"  'Blattname
Const TabZiel As String = "Artikel Möbel"            'Blattname
Dim r As Range
Dim ZeileBis As Long
Dim ZeileZiel As Long
Application.ScreenUpdating = False
With Sheets(TabQuelle)
ZeileBis = .Cells(.Rows.Count, SpalteAenderung).End(xlUp).Row
If Not ZeileBis 
Der neue Artikel wird unten angefügt (in Spalte G in der letzten freien Zeile), aber die Interne Nummer der entsprechenden Zeile wird beibehalten.
Allerdings wird der Artikel, obwohl eingetragen, im Datenabgleich immer noch als "neu" gewertet. Ich nehme an das liegt daran, dass du die Interne Nr prüfst aber eben die sich ja gerade geändert hat.
Grüße,
Klaus M.vdT.

schönes Wochenende!
23.01.2015 14:53:32
Klaus
Hi Jürgen,
ich schaue übers Wochenende nicht rein, bis Montag ist dieser Thread in der Versenkung. Wenn noch was ist, mach bitte ein neues Thema auf.
schönes Wochenende,
Klaus M.vdT.

AW: schönes Wochenende!
24.01.2015 21:13:16
Laser
Hallo Klaus
Falls doch reinschaust :-)
Es Klappt super vielen vielen Dank.
Und was ich super finde das du neben die Codes die Bedeutung rangeschrieben hast das hat mir immens geholfen das ganze zu verstehen.
Jetzt komme ich mit VBA viel besser Klar da ich nun gewisse sachen mir erklären konnte was das zu bedeuten hat.
schönes WE wünsche ich dir
mfg
Jürgen

Danke für die Rückmeldung! Hab dich ..
26.01.2015 12:36:17
Klaus
... gerade noch erwischt :-)
Freut mich geholfen zu haben und dass ich dir VBA etwas näher gebracht habe!
Grüße,
Klaus M.vdT.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige