Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1180to1184
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

Spalten vergleichen und verschieben

Spalten vergleichen und verschieben
Julia
Hallo Leute,
ich benötige Eure Hilfe mal wieder:-)
Ich muss 2 Spalten miteinander vergleichen, dabei hat die eine Spalte (B) ca. 1000 Einträge und die andere Spalte (C) ca. 250 Einträge. Hierbei sollen die übereinstimmenden Eintragungen der Spalte C neben den Eintragungen in Spalte B gesetzt werden. Wenn keine Übereinstimmung von Spalte C zu Spalte B vorhanden ist sollen die Zellen in B und C gelb hinterlegt werden. Fehlt jedoch ein Wert in Spalte B und ist in C vorhanden, sollen die Zellen in B und C rot hinterlegt werden.
Bei den Eintragungen handelt es sich um gemischte Daten aus Buchstaben und Zahlen.
Vielen Dank im Voraus
Grüße Julia

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Spalten vergleichen und verschieben
11.10.2010 10:52:54
CitizenX
Hallo Julia,
ich komme mit deiner Logik nicht zurecht:
1.

Wenn keine Übereinstimmung von Spalte C zu Spalte B vorhanden ist sollen die Zellen in B und C   gelb hinterlegt werden
2.

Fehlt jedoch ein Wert in Spalte B und ist in C vorhanden, sollen die Zellen in B und C rot  _
hinterlegt werden.
Frage: Wenn der Wert von Spalte B in Spalte C nicht vorhanden ist , dann kommt doch der Wert von Spalte C auch nicht in Spalte B vor?!
od habe ich Dich da falsch verstanden?
folgendes Makro stellt die Übereinstimmungen nebeneinander und färbt die nicht "Übereinstimmer" von Spalte B-gelb und die von Spalte C-rot.
Code kommt in das betreffende Tabellenblatt:
[CODE]

Option Explicit
 
Sub Vergleichen()
Dim lngLastRow As Long, i As Long
Dim varVergleich As Variant
Dim varZelle1 As Variant, varZelle2 As Variant
 
'StartReihe - bitte anpassen
Const lngStart1 = 2
'letzte Reihe
lngLastRow = Cells(Rows.Count, 2).End(xlUp).Row
 
 
For i = lngStart1 To lngLastRow
 
varVergleich = Application.Match(Cells(i, 2), Columns(3), 0)
 
If Not IsNumeric(varVergleich) Then
 
varVergleich = Application.Match(Cells(i, 3), Columns(2), 0)
 
If Not IsNumeric(varVergleich) Then
If Cells(i, 3) <> ""  _
Then
Cells(i, 3).Interior.ColorIndex = 3
Cells(i, 2).Interior.ColorIndex = 6
Else
Cells(i, 2).Interior.ColorIndex = 6
End If
Else
Cells(i, 2).Interior.ColorIndex = 6
End If
 
Else
varZelle1 = Cells(varVergleich, 3)
varZelle2 = Cells(i, 3)
Cells(i, 3) = varZelle1
Cells(varVergleich, 3) = varZelle2
End If
 
Next
 
 
End Sub
 

Grüße
Steffen
Anzeige
AW: Spalten vergleichen und verschieben
11.10.2010 11:20:00
Julia
Hallo Steffen,
sorry, wenn ich mich etwas unverständlich ausgedrückt habe, aber du hast es richtig interpretiert.
Dein Code funktioniert, nur ist mir gerade ausfgefallen, dass bei einigen Eintragungen noch 1 oder 2 Leerzeichen dahinter stehen. Diese wurden beim Einlesen der Original-Datei mit übernommen, somit zeigt mir der Code aber Unstimmigkeiten an.
Kann man diese Leerzeichen vor dem Vergleichen noch raus schmeißen?
Wenn, ja wie?
Vielen Dank und Gruß
Julia
...mit Trim(...) ! owT
11.10.2010 11:33:45
Luc:-?
:-?
so
11.10.2010 12:00:04
CitizenX
Hallo Julia,
Ersetze mal den Code mit diesen:
[CODE]

Option Explicit
 
Sub Vergleichen()
Dim i As Long
Dim lngLastRow1 As  _
Long
Dim lngLastRow2 As  _
Long
Dim varVergleich As Variant
Dim varZelle1 As Variant, varZelle2 As Variant
 
'StartReihe - bitte anpassen
Const lngStart1 = 2
 
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
 
'letzte Reihe Spalte B
lngLastRow1 = Cells(Rows.Count, 2).End(xlUp).Row
'letzte Reihe Spalte C
lngLastRow2 = Cells(Rows.Count, 3).End(xlUp).Row
 
'leerzeichen in Spalte A entfernen
For i = lngStart1 To lngLastRow2
Cells(i, 3) = Trim(Cells(i, 3))
Next
 
 
For i = lngStart1 To lngLastRow1
 
'leerzeichen in Spalte B entfernen
Cells(i, 2) = Trim(Cells(i, 2))
 
varVergleich = Application.Match(Cells(i, 2), Columns(3), 0)
 
If Not IsNumeric(varVergleich) Then
 
varVergleich = Application.Match(Cells(i, 3), Columns(2), 0)
 
If Not IsNumeric(varVergleich) Then
If Cells(i, 3) <> ""  _
Then
Cells(i, 3).Interior.ColorIndex = 3
Cells(i, 2).Interior.ColorIndex = 6
Else
Cells(i, 2).Interior.ColorIndex = 6
End If
Else
Cells(i, 2).Interior.ColorIndex = 6
End If
 
Else
varZelle1 = Cells(varVergleich, 3)
varZelle2 = Cells(i, 3)
Cells(i, 3) = varZelle1
Cells(varVergleich, 3) = varZelle2
End If
 
Next
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
 
End Sub
 

Grüße
Steffen
Anzeige
AW: so
11.10.2010 13:38:16
Julia
Hallo Steffen,
funktioniert prima.
Vielen Dank
Gruß Julia
Bei einer FmlLösung würdest du eine 3.Spalte...
11.10.2010 11:06:27
Luc:-?
…benötigen, Julia,
die Fml wäre aber sicher recht komplex. Mit VBA könntest du Spalte C umsortieren, so dass BC-Paare gleicher Werte entstehen. Dazu ist es sicher sinnvoll, zuerst beide Spalten separat zu sortieren. Was nach der Umsortierung von C am alten Standort verbleibt, ist dann ggf ungleich.
Aber eigentlich darf es das gar nicht geben, denn das wären automatisch Lücken in B! Oder hast du uns noch ein Kriterium verschwiegen? Denn immerhin stehen 1000+x Einträgen in B nur 250+z in C ggüber. Also vglt man C mit B - Wert für Wert. Stimmen die Werte überein, wird in einer Hilfsspalte gl Größe wie B oder pgmintern bei allen Treffern in B der dortige Wert übernommen bzw markiert. Wenn der Wert in C keinen Treffer hat, wird er separat notiert, bspw in einer weiteren Hilfsspalte bzw internem Wertevektor.
Jetzt sind 3 Ergebnisvarianten denkbar:
1. C hat Treffer in B → Wert aus C steht neben jedem gleichen Wert aus B (oder darf es nur einen Treffer in B geben?)
2. C hat keinen Treffer in B und wird deshalb an's Ende der Spalte C gestellt — ab Zeile 1000+x+1
3. B wird nicht getroffen und hat deshalb keinen Partner → der Platz bleibt leer bzw wird abschließend mit den C-Werten ab Zeile 1000+x+1 gefüllt. Nur so ließe sich der Zustand B ≠ C erreichen. Dann gibt's aber ggf keinen Zustand C ohne B-Pendant.
Aber viell sieht das ja alles ganz anders aus bei dir… Dann müsstest du das mal genauer beschreiben! Denn so scheinen deine Angaben ja nicht gerade die Cracks hinterm Ofen vor zu locken… ;-)
Gruß Luc :-?
Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige