Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
424to428
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
424to428
424to428
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Vergleichen und Kopieren von Zeilen (unsortiert)

Vergleichen und Kopieren von Zeilen (unsortiert)
09.05.2004 10:04:41
Zeilen
Hallo zusammen,
habe in 2 Tabellenblätter einer Mappe Daten stehen. Nun müssen die Spalten aus Blatt2 B-E in das Blatt1 unter Berücksichtigung jeweils des Wertes in der Spalte A zusammengefügt werden. (der Wert in Spalte A ist eine 6-stellige Zahl) Gedacht habe mir ich folgendes:
Wenn Inhalt von Spalte A(Blatt2) gleich Inhalt von SpalteA(Blatt1) dann kopiere(einfügen) Spalte B-E nach SpalteB(Blatt1).
Die ganze Sache hat aber einen Haken: die Reihenfolge von SpalteA(Blatt2) ist ungleich SpalteA(Blatt1). Es wäre auch möglich, das es keine übereinstimmenden Werte gibt. In diesem Fall sollte aber trotzdem kopiert werden.
Eine Lösung mit VBA ist erforderlich, da ich das ganze automatisieren möchte, leider habe ich keine umfangreichen Kenntnisse von VBA um das hinzukriegen.
Vielen Dank im voraus
ROlf

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Vergleichen und Kopieren von Zeilen (unsortiert)
09.05.2004 10:33:21
Zeilen
Hallo Rolf,
machbar ist das schon, nur müsste ich wissen wohin das Ganze kopiert werden muss, in welche Spalte und wieviele Spalten und wohin müssen die Wert, die keinen übereinstimmenden Wert haben.
Gruss Beni
AW: Vergleichen und Kopieren von Zeilen (unsortiert)
09.05.2004 10:48:26
Zeilen
Hallo Beni,
die Spalten B-E(Blatt2) müssen, bei Übereinstimmung von Wert in Spalte A(Blatt1) = Wert in Spalte A(Blatt2) bei Blatt1 in Spalte B eingefügt werden.
Dabei dürfen natürlich nicht die vorhanden Spalten B-E überschrieben werden. ;-)
Die Zeilen die keine Überstimmung haben müssen in Blatt1 komplett eingefügt werden, also Spalten A-E, wo ist eigentlich egal. Perfekt wäre natürlich , innerhalb einer aufsteigenden Sortierung in Blatt1.
Grüße
ROlf
Anzeige
AW: Vergleichen und Kopieren von Zeilen (unsortiert)
09.05.2004 11:05:31
Zeilen
Hallo Rolf,
die nicht übereinstimmende Werte, werden am Ende der Tabelle angefügt, in aufsteigenden Sortierung ist nicht möglich, weil, wie Du schreibst, ist die Tabelle unsortiert ist.
Gruss Beni

Sub Vergleichen_und_Kopieren()
Sheets("Tabelle2").Select
With Worksheets("Tabelle1").Columns(1)
For i = 1 To Cells(65536, 1).End(xlUp).Row
Wert = Cells(i, 1)
Set C = .Find(Wert, LookIn:=xlValues, LookAt:=xlWhole)
If Not C Is Nothing Then
If C(1, 2) = "" Then Cells(i, 2).Copy Destination:=C(1, 2)
If C(1, 3) = "" Then Cells(i, 3).Copy Destination:=C(1, 3)
If C(1, 4) = "" Then Cells(i, 4).Copy Destination:=C(1, 4)
If C(1, 5) = "" Then Cells(i, 5).Copy Destination:=C(1, 5)
Else
r = .Cells(65536, 1).End(xlUp).Row + 1
Range(Cells(i, 1), Cells(i, 5)).Copy Destination:=.Cells(r, 1)
End If
Next i
End With
End Sub

Anzeige
Alternative
Erich
Hallo Rolf,
habe mit Hilfe des Forums mal folgende flexible UF entwickelt,
könntest du evtl. anpassen, falls Du das öfters benötigst:
https://www.herber.de/bbs/user/6159.xls
mfg
Erich
AW: Alternative
09.05.2004 11:46:48
ROlf
Hallo Erich,
auch ein schönes Teil. Glückwunsch. Ist für meinen Bedarf aber ein bisschen oversized.
Was mir aufgefallen ist, daß in der Ergebnisstabelle, alle Spalten gleich breit sind.
Hast Du das mit einer fixen Spaltenbreite oder mit festen Zeichenanzahl in einer Spalte gemacht ?
Habe nämlich noch so ein Problem auf einer anderen Baustelle, wo die Spalten eine feste Zeichengröße haben müssen, egal was drinsteht. Benötige dies für den Export in eine andere Anwendung.
Grüße
ROlf
Anzeige
Spaltenbreite
Erich
Hallo Rolf,
habe ebenfalls aus dem Forum sukzessive entwickelt:

Sub Spalte_opt()
Dim mySpalte As Integer
Dim iSpalte As Integer  ' Byte
Cells.Select
With Selection
.WrapText = False
End With
Range("A1").Select
' Hier die maximale Spaltenbreite einstellen
Const MaxBreite = 60
mySpalte = Cells.SpecialCells(xlCellTypeLastCell).Column
Range(Cells(1, 1), Cells(1, mySpalte)).EntireColumn.AutoFit
For iSpalte = 1 To mySpalte
If Columns(iSpalte).ColumnWidth > MaxBreite Then _
Columns(iSpalte).ColumnWidth = MaxBreite
Next iSpalte
End Sub

Habe das in meiner PERSONL.XLS und damit immer "griffbereit"; dieses Problem
habe ich ebenfalls laufend auf den Baustellen.
mfg
Erich
Anzeige
AW: Spaltenbreite
09.05.2004 14:00:31
ROlf
Hallo Erich,
so stellts Du alle Spalten aud eine feste Breite ein. Ich suche nach einer Möglichkeit für alle Spalten unterschiedlich feste Breiten einzustellen.
Wenn du dann eine csv-Datei davon machst, wird die Spaltenbreite wieder entfernt. :-(
In meinem Fall soll diese aber bleiben. Vielleicht stimmt auch das csv-Format nicht und ich benötige ein anderes Format.
Grüße
ROlf
AW: Vergleichen und Kopieren von Zeilen (unsortiert)
Zeilen
Hallo Beni,
das funzt super. Vielen Dank.
Leider hatte ich vergessen zu erwähnen, das die erste Zeile eine Überschrift ist. Die wird als nicht übereinstimmend jetzt mit gefunden. Habe folgende Änderung vorgenommen:
For i = 1 To Cells(65536, 2).End(xlUp).Row
Gilt das für beide Blätter? Habe es ausprobiert und es funktioniert so.
Grüße
ROlf
Anzeige
AW: Vergleichen und Kopieren von Zeilen (unsortiert)
Zeilen
Hallo Rolf,
Du hast die Spalte geändert, bei Cells ist links die Zeile, 65536 ist die letzte Zeile, aufwärts bis zur letzten gefüllten Zelle.
Gruss Beni
For i = 2 To Cells(65536, 1).End(xlUp).Row
AW: Vergleichen und Kopieren von Zeilen (unsortiert)
09.05.2004 11:55:00
Zeilen
Hallo Beni,
autsch. ;-)
Danke dir.
Grüße
ROlf
AW: Vergleichen und Kopieren von Zeilen (unsortiert)
09.05.2004 13:37:58
Zeilen
Hallo Beni,
ähm ... also jetzt verstehe ich überhaupt nichts mehr.
Irgendie kopiert das kleine Makro nur Zeilen von Tabelle2 die NICHT in Tabelle1 enthalten sind.
Mein Ziel war es folgendes zu erreichen:
Beispiel:
Tabelle1
A|B|C
200530|4|ALCES
200565|2BEJUSE
200619|4|ALHERE
200624|2|BEJUSE
Tabelle2
A|B|C
200530|ARN|14
200565|CPH|14
200619|ARN|14
200620|ARN|14 :fehlt in Tabelle1
200624|GOT|7
Ergebnis:
Tabelle1
A|B|C|D|E|F
200530|200530|ARN|14|4|ALCES
200565|200565|CPH|14|2BEJUSE
200619|200619|ARN|14|4|ALHERE
200624|200624|GOT|7|2|BEJUSE
LEER|200620|ARN|14
Kannst Du hier vielleicht nochmal schauen ?
Danke
Grüße
ROlf
Anzeige
AW: Vergleichen und Kopieren von Zeilen (unsortiert)
09.05.2004 16:42:32
Zeilen
Hallo ROlf,
das sieht ein bisschen anders aus, dass die Werte zwischen die bestehende Werte eingefügt werden müssen, hast Du nicht geschrieben, aber macht nichts, ich hoffe jetzt funktioniert es.
Gruss Beni

Sub Vergleichen_und_Kopieren()
Sheets("Tabelle2").Select
With Worksheets("Tabelle1").Columns(1)
For i = 1 To Cells(65536, 1).End(xlUp).Row
Wert = Cells(i, 1)
Set C = .Find(Wert, LookIn:=xlValues, LookAt:=xlWhole)
If Not C Is Nothing Then
Range(.Cells(i, 2), .Cells(i, 4)).Cut Destination:=C(1, 5)
Range(Cells(i, 1), Cells(i, 3)).Copy Destination:=C(1, 2)
Else
r = .Cells(65536, 2).End(xlUp).Row + 1
Range(Cells(i, 1), Cells(i, 5)).Copy Destination:=.Cells(r, 2)
End If
Next i
End With
End Sub

Anzeige
Vergleichen und Kopieren von Zeilen (unsortiert)
09.05.2004 18:41:18
Zeilen
Hallo Beni,
da ist fast perfekt, aber:
die ursprünglichen 3 Spalten B|C|D aus Tabelle1 überschreiben nach dem Kopierenvorgang die Spalten E|F|G Tabelle1, sie müssen aber vor Spalte E wieder eingefügt werden, dodaß sich der Rest der Spalten nach recht verschiebt.
Sorry ;-)
Grüße
ROlf

32 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige