Anzeige
Archiv - Navigation
804to808
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
804to808
804to808
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Spalten Vergleich

Spalten Vergleich
27.09.2006 14:34:35
Cigo
Hallo Profis,
Ich habe da ein Problem mit vergleichen von 2 Spalten, ich habe mir zwar ein VBA Script zusammengebastelt der zwei Spalten vergleicht und die werte die sich in der Spalte (H) aber nicht in der Spalte (I) wieder finden ROT in der Spalte (H) markiert und wiederum die Werte die sich in beider Spalten befinden in der Spalte (I) GRÜN Markiert.
Hier derCode:

Sub Tabellen_Vergleichen ()
Dim LoI As Long
Dim LoJ As Long
Dim LoLetzte1 As Long
Dim LoLetzte2 As Long
Dim BoNein As Boolean
LoLetzte1 = 65536
With Worksheets("Tabelle1")
If .Range("H65536") = "" Then LoLetzte1 = .Range("H65536").End(xlUp).Row
End With
LoLetzte2 = 65536
With Worksheets("Tabelle1")
If .Range("I65536") = "" Then LoLetzte2 = .Range("I65536").End(xlUp).Row
End With
For LoI = 1 To LoLetzte1
For LoJ = 1 To LoLetzte2
' Leerzellen nicht kennzeichnen
If Worksheets("Tabelle1").Cells(LoI, 8) <> "" Then
If Worksheets("Tabelle1").Cells(LoI, 8) = Worksheets("Tabelle1").Cells(LoJ, 9) Then
Worksheets("Tabelle1").Cells(LoJ, 9).Interior.ColorIndex = 4
BoNein = True
End If
End If
Next LoJ
If BoNein = False Then
If Worksheets("Tabelle1").Cells(LoI, 8) <> "" Then
Worksheets("Tabelle1").Cells(LoI, 8).Interior.ColorIndex = 3
End If
End If
BoNein = False
Next LoI
End Sub

Es gibt aber da noch ein Problem und zwar wenn sich z.B. in der Spalte (H) zweimal wert 100 befindet und in der Spalte (I) der Wert 100 nur einmal vorkommt markiert der Script den Wert in der Spalte (I) GRÜN und in der Spalte (H) werden die Werte nicht ROT markiert bzw. der Wert.
Denn es sollte der eine 100-er ROT markiert werden da er nur einmal in der Spalte (H) vorkommt.
Siehe Bild:
https://www.herber.de/bbs/user/37053.jpg"
Ich hoffe es ist nicht zu kompliziert und ihr könnt mir helfen.
Danke im Voraus.

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten Vergleich
27.09.2006 17:02:26
Dan
Hi Cigo,
hier mein Versuch. Die Farben sind anders, das sollte man aendern. Funzt es bei Dir? Gruss Dan, cz.
Private Const FIRST_COLUMN_LETTER As String = "H"
Private Const SECOND_COLUMN_LETTER As String = "I"
Public

Sub CompareColumns()
Dim usedRangeOfFirstColumn As Range ' first used column
Dim rowInFirst As Long
Dim cellInFirst As Range
Dim usedRangeOfSecondColumn As Range ' second used column
Dim rowInSecond As Long
Dim cellInSecond As Range
Dim matchingCellFound As Boolean
' Nummern aus den Bereich usedRangeOfFirstColumn werden in dem Bereich usedRangeOfSecondColumn gesucht
On Error Resume Next
Set usedRangeOfFirstColumn = Application.Intersect(ActiveSheet.UsedRange, ActiveSheet.Columns(FIRST_COLUMN_LETTER)).Cells
Set usedRangeOfSecondColumn = Application.Intersect(ActiveSheet.UsedRange, ActiveSheet.Columns(SECOND_COLUMN_LETTER)).Cells
' keine Daten gefunden
If (usedRangeOfFirstColumn Is Nothing Or usedRangeOfSecondColumn Is Nothing) Then Exit Sub
' daten ueberlappen sich
If (Not Application.Intersect(usedRangeOfFirstColumn, usedRangeOfSecondColumn) Is Nothing) Then Exit Sub
On Error GoTo Err_CompareColumns
' die Farben in durchsuchten Bereichen loeschen
usedRangeOfFirstColumn.Interior.ColorIndex = xlColorIndexNone
usedRangeOfSecondColumn.Interior.ColorIndex = xlColorIndexNone
For Each cellInFirst In usedRangeOfFirstColumn
matchingCellFound = False
For Each cellInSecond In usedRangeOfSecondColumn
If (cellInFirst.Value = cellInSecond.Value And cellInSecond.Interior.ColorIndex = xlColorIndexNone) Then
' Zelle in der zweiten Spalte markieren, den Wert von matchingCellFound auf true setzen und for-next verlassen
cellInSecond.Interior.ColorIndex = 6
matchingCellFound = True
Exit For
End If
Next cellInSecond
If (matchingCellFound = False) Then cellInFirst.Interior.ColorIndex = 3
Next cellInFirst
Exit Sub
Err_CompareColumns:
VBA.MsgBox Err.Description, vbCritical, "Error [" & Err.Number & "] in CompareColumns"
End Sub

Anzeige
AW: Spalten Vergleich
28.09.2006 07:49:56
Cigo
Moin,
Danke für eure Mühe, „Dan“ dein Script funktioniert prima aber der markiert auch die Leerzellen und das sollte er nicht.
Ich habe da was selber versucht kriege es aber nicht hin.
Wenn man mir da noch ein bißchen helfen könnte…!?
AW: Spalten Vergleich
02.10.2006 10:16:55
Dan
Hi, wenn man die leeren Zellen nicht vergleichen will:
Option Explicit
'

Sub Tabellen_Vergleichen()
'Dim LoI As Long
'Dim LoJ As Long
'Dim LoLetzte1 As Long
'Dim LoLetzte2 As Long
'Dim BoNein As Boolean
'LoLetzte1 = 65536
'With Worksheets("Tabelle1")
'If .Range("H65536") = "" Then LoLetzte1 = .Range("H65536").End(xlUp).Row
'End With
'LoLetzte2 = 65536
'With Worksheets("Tabelle1")
'If .Range("I65536") = "" Then LoLetzte2 = .Range("I65536").End(xlUp).Row
'End With
'For LoI = 1 To LoLetzte1
'For LoJ = 1 To LoLetzte2
'' Leerzellen nicht kennzeichnen
'If Worksheets("Tabelle1").Cells(LoI, 8) <> "" Then
'If Worksheets("Tabelle1").Cells(LoI, 8) = Worksheets("Tabelle1").Cells(LoJ, 9) Then
'Worksheets("Tabelle1").Cells(LoJ, 9).Interior.ColorIndex = 4
'BoNein = True
'End If
'End If
'Next LoJ
'If BoNein = False Then
'If Worksheets("Tabelle1").Cells(LoI, 8) <> "" Then
'   Worksheets("Tabelle1").Cells(LoI, 8).Interior.ColorIndex = 3
'End If
'End If
'BoNein = False
'Next LoI
'End Sub

Private Const FIRST_COLUMN_LETTER As String = "H"
Private Const SECOND_COLUMN_LETTER As String = "I"
Public

Sub CompareColumns()
Dim usedRangeOfFirstColumn As Range ' first used column
Dim rowInFirst As Long
Dim cellInFirst As Range
Dim usedRangeOfSecondColumn As Range ' second used column
Dim rowInSecond As Long
Dim cellInSecond As Range
Dim matchingCellFound As Boolean
' Nummern aus den Bereich usedRangeOfFirstColumn werden in dem Bereich usedRangeOfSecondColumn gesucht
On Error Resume Next
Set usedRangeOfFirstColumn = Application.Intersect(ActiveSheet.UsedRange, ActiveSheet.Columns(FIRST_COLUMN_LETTER)).Cells
Set usedRangeOfSecondColumn = Application.Intersect(ActiveSheet.UsedRange, ActiveSheet.Columns(SECOND_COLUMN_LETTER)).Cells
' keine Daten gefunden
If (usedRangeOfFirstColumn Is Nothing Or usedRangeOfSecondColumn Is Nothing) Then Exit Sub
' daten ueberlappen sich
If (Not Application.Intersect(usedRangeOfFirstColumn, usedRangeOfSecondColumn) Is Nothing) Then Exit Sub
On Error GoTo Err_CompareColumns
' die Farben in durchsuchten Bereichen loeschen
usedRangeOfFirstColumn.Interior.ColorIndex = xlColorIndexNone
usedRangeOfSecondColumn.Interior.ColorIndex = xlColorIndexNone
For Each cellInFirst In usedRangeOfFirstColumn
' leere Zellen nicht vergleichen
If (cellInFirst.Value <> "") Then
matchingCellFound = False
For Each cellInSecond In usedRangeOfSecondColumn
If (cellInFirst.Value = cellInSecond.Value And cellInSecond.Interior.ColorIndex = xlColorIndexNone) Then
' Zelle in der zweiten Spalte markieren, den Wert von matchingCellFound auf true setzen und for-next verlassen
cellInSecond.Interior.ColorIndex = 6
matchingCellFound = True
Exit For
End If
Next cellInSecond
If (matchingCellFound = False) Then cellInFirst.Interior.ColorIndex = 3
End If
Next cellInFirst
Exit Sub
Err_CompareColumns:
VBA.MsgBox Err.Description, vbCritical, "Error [" & Err.Number & "] in CompareColumns"
End Sub

Anzeige
AW: Spalten Vergleich
27.09.2006 17:24:50
Beate
Hallo Cigo,
ich weiß nicht, ob ich deine Bedingungen richtig interpretiert habe, aber grundsätzlich reicht für diese Aufgabenstellung die bedingte Formatierung.
 HI
1Wert1Wert2
2165551
3311961
44088
512233
6961408
712376
8651973
964158
10165635
11456255
12314357
13440911
14635791
153070
16401148
17551959
18408455
1956131
20656507

Bedingte Formatierungen der Tabelle
ZelleNr.: / BedingungFormat
H21. / Formel ist =(ZÄHLENWENN($H$2:$H$20;H2)>1)*(ZÄHLENWENN($I$2:$I$20;H2)=0)Abc
I21. / Formel ist =(ZÄHLENWENN($I$2:$I$20;I2)>0)*(ZÄHLENWENN($H$2:$H$20;I2)>0)Abc

Die Formeln aus Zeile 2 sind kopierbar.
Siehe: http://www.online-excel.de/excel/singsel.php?f=75#s14
Gruß,
Beate
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige