Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
280to284
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
280to284
280to284
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

2 tabellen vergleichen und abstimmen

2 tabellen vergleichen und abstimmen
18.07.2003 11:47:29
PeterB
hallo forum,
ich muß nochmal nachfragen, weil u.u. meine vorher formulierte frage nicht ganz klar war:
ich habe 2 tabellen, die ich miteinander abgleichen möchte.
in der einen stehen viele 1000 produkte mit z.b. art.nr., bezeichnung, abmessung, etc.
in der anderen stehen dieselben produkte kumuliert und geordnet.
die aufgabe ist nun, automatisch einen abgleich hinzukriegen: die datensätze, die in der geordneten tabelle noch nicht enthalten sind, sollen automatisch unten dran gesetzt werden.
hilfe: wie mache ich das? ich kann zwar programmieren, hab aber von VBA keine ahnung.
mit formeln bin ich soweit, daß ich schon erkannt und markiert habe, welche datensätze noch nicht vorhanden sind...

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Formelfreie Lösung
18.07.2003 14:20:06
Boris
Hi Peter,
hier noch ne Lösung ohne Formel - ist m.E. besser.
Option Explicit

Sub abgleich()
Dim Ws1 As Worksheet, Ws2 As Worksheet, Suchbereich As Range
Dim Ws1Lz As Long, Ws2Lz As Long, C As Range
Set Ws1 = Worksheets("Tabelle1") 'unsortierte Tabelle
Set Ws2 = Worksheets("Tabelle2") 'sortierte Tabelle
Set Suchbereich = Ws2.Range("A:A")
Ws1Lz = Ws1.Range("A65536").End(xlUp).Row
Ws2Lz = Ws2.Range("A65536").End(xlUp).Row + 1
For Each C In Ws1.Range("A1:A" & Ws1Lz)
If Suchbereich.Find(C) Is Nothing Then
Ws2.Rows(Ws2Lz).Value = Ws1.Rows(C.Row).Value
Ws2Lz = Ws2Lz + 1
End If
Next C
End Sub

Grüße Boris

Anzeige
AW: Formelfreie Lösung
21.07.2003 09:07:10
PeterB
Hallo Boris,
danke für deine lösung. leider funzt sie nicht. ich weiss jetzt nicht, ob ich was falsch gemacht hab, deswegen poste ich hier mal den angepaßten code:
ich geh doch recht in der annahme, daß der code in die Ws2 reinsoll, also die tabelle, die erweitert werden soll und schon sortiert ist.
Option Explicit '<-- kannst du mir bitte sagen, was genau eine option macht?

Sub abgleich()
Dim Ws1 As Worksheet, Ws2 As Worksheet, Suchbereich As Range
Dim Ws1Lz As Long, Ws2Lz As Long, C As Range
Set Ws1 = Worksheets("'Auswertung.xls'!Art-Nr. zusammengefasst")   '<-- könnte hier ein fehler liegen?
Set Ws2 = Worksheets("Entry by Item Invoiced Currency")
Set Suchbereich = Ws2.Range("E:E")                           '<-- meine vergleichsdaten sind in spalte e in der sortierten, in spalte a in der unsortierten tabelle
Ws1Lz = Ws1.Range("A65536").End(xlUp).Row
Ws2Lz = Ws2.Range("E65536").End(xlUp).Row + 1
For Each C In Ws1.Range("A1:A" & Ws1Lz)
If Suchbereich.Find(C) Is Nothing Then
MsgBox "HAB EINEN"   '<-- war zu test, obs überhaupt geht
Ws2.Rows(Ws2Lz).Value = Ws1.Rows(C.Row).Value
Ws2Lz = Ws2Lz + 1
End If
Next C
End Sub

wenn ich das ablaufen lassen will, bekomme ich einen fehler runtime-error 9: subscript out of range. dmait kann ich leider nix anfangen :-(
danke schonmal peter

Anzeige
Du hast auch von Tabellen gesprochen...
21.07.2003 09:39:56
Boris
Hi Peter,
...und nicht MAPPEN - das ist doch ein kleiner Unterschied.
Mein Beispiel bezog sich darauf, dass die Daten in EINER Mappe, aber in unterschiedlichen Tabellen / Blättern sind.
Füg doch mal testweise die Daten in EINER Mappe zusammen (Copy und Paste) - und lass dann mal den Code laufen.
Natürlich geht es auch mit 2 Mappen - aber dafür muss man den Code halt etwas ändern.
Werde ihn nachher eventuell noch nachreichen.
Grüße Boris

AW: Du hast auch von Tabellen gesprochen...
21.07.2003 10:15:57
peter
hallo boris,
tut mir leid, mir war nicht bewusst, daß der unterschied wichtig ist: bisher konnte ich eigentlich alle probleme lösen, egal, ob es tabellen oder mappen waren, weil ja der pointer relativ zu setzen war. ich hatte gedacht, daß man mit der "pfad"-angabe hinkommt.
ich wäre dir echt dankbar, wenn du mir noch hilfestellung leisten könntest.
grüße peter

Anzeige
Lösung für 2 Mappen
21.07.2003 11:03:01
Boris
Hi Peter,
ich hab´s jetzt nicht genau mit Deinen Namen und Bereichen nachgebaut - aber dafür wieder entsprechend kommentiert. Ich denke, dass du es angepasst bekommst - wenn nicht, melde dich nochmal.
Option Explicit

Sub abgleich()
Dim Wb1 As Workbook, Wb2 As Workbook
Dim Ws1 As Worksheet, Ws2 As Worksheet, Suchbereich As Range
Dim Ws1Lz As Long, Ws2Lz As Long, C As Range
Set Wb1 = Workbooks("Auswertung.xls") 'unsortierte Mappe
Set Wb2 = Workbooks("Entry.xls") 'sortierte Mappe
Set Ws1 = Wb1.Worksheets("Tabelle1") 'Tabellenblatt unsortierte Mappe
Set Ws2 = Wb2.Worksheets("Tabelle1") 'Tabellenblatt sortierte Mappe
Set Suchbereich = Ws2.Range("A:A") 'Bereich in sortierter Mappe
Ws1Lz = Ws1.Range("A65536").End(xlUp).Row
Ws2Lz = Ws2.Range("A65536").End(xlUp).Row + 1
For Each C In Ws1.Range("A1:A" & Ws1Lz)
If Suchbereich.Find(C) Is Nothing Then
Ws2.Rows(Ws2Lz).Value = Ws1.Rows(C.Row).Value
Ws2Lz = Ws2Lz + 1
End If
Next C
End Sub

Beide Mappen müssen geöffnet sein.
Grüße Boris

Anzeige
AW: Lösung für 2 Mappen
21.07.2003 11:51:37
PeterB
Hallo Boris,
klasse, danke, funktioniert fast!
das problem ist, daß er nur einen datensatz holt und dann einen 1004 application-defined or object-defined error ausspuckt (womit ich grad wenig anfangen kann).
außerdem muß ich (optimalerweise) noch basteln, daß er mir nur einzelne zellen holt, weil die im sortierten blatt anders geordnet sind, aber das ist die kür zur pflicht. gehe ich recht in der annahme, daß ich mit .Cell statt .Rows arbeiten muß?
grüße peter

AW: Lösung für 2 Mappen
21.07.2003 12:19:03
Boris
Hi Peter,
ich bin nicht grade der VBA-Fachmann.
Daher schlage ich zu diesem Zeitpunkt vor, dass du einen neuen Thread anfängst, in dem du die bisherige Lösung postest und das Problem nochmal schilderst.
Das macht eine schnelle Lösung wahrscheinlicher...;-)
Grüße Boris

Anzeige
AW: Lösung für 2 Mappen
21.07.2003 13:35:59
PeterB
hi boris,
danke, hab ich gemacht. ich weiss jetzt, warum er den fehler bringt und hab auch schon eine einzelne zelle rausgepickt (die es noch zu schreiben gilt ;-) )
er springt vom ersten gefundenen wert, den er überträgt direkt ans ende der unsortierten tabelle und von da beschwert er sich (zu recht), daß die tabelle zuende ist.
jetzt ist die frage, warum springt er vom ersten gefundenen wert zum ende?
wenn du eine ahnung hast, sag doch bitte bescheid.
danke peter

AW: 2 tabellen vergleichen und abstimmen
18.07.2003 14:01:13
Boris
Hi Peter,
Tabelle1: unsortiert
Tabelle2: Sortiert
Deine Produkte stehen in Spalte A, sowohl in Tabelle1 als auch Tabelle2.
Anhand dieser Spalten wird der Abgleich (ob schon vorhanden) durchgeführt.
Nimm eine freie Spalte in Tabelle1 (im Beispiel C).
Dort in A1:
=ZÄHLENWENN(A1;Tabelle2!A:A)
und runterkopieren bis zum Ende der Liste.
Dazu folgendes Makro:
Option Explicit

Sub abgleich()
Dim Ws1 As Worksheet, Ws2 As Worksheet
Dim X As Long, Ws1Lz As Long, Ws2Lz As Long
Set Ws1 = Worksheets("Tabelle1") 'unsortierte Tabelle
Set Ws2 = Worksheets("Tabelle2") 'sortierte Tabelle
Ws1Lz = Ws1.Range("C65536").End(xlUp).Row 'die Spalte mit der ZÄHLENWENN-Formel - hier: C
For X = 1 To Ws1Lz
If Ws1.Range("C" & X) = 0 Then 'wieder die Spalte mit der ZÄHLENWENN-Formel
Ws2Lz = Ws2.Range("A65536").End(xlUp).Row + 1 'Spalte mit den Artikeln
Ws2.Rows(Ws2Lz).Value = Ws1.Rows(X).Value
End If
Next X
End Sub

Die Spaltenbezeichnungen musst du natürlich an deine Gegebenheiten anpassen.
Grüße Boris

Anzeige
Formel natürlich in C1 und runterkopieren...
18.07.2003 14:02:06
Boris
...und nicht in A1.
Boris

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige