Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1584to1588
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 doppelte markieren

Spalten vergleichen und doppelte markieren
08.10.2017 11:32:49
parza
Halllo zusammen,
vor einiger Zeit hat mir das Forum sehr hilfreich bei der unten stehen Programmierung super geholfen.
Ziel ist, dass alle Daten in einer Datei, die aus mehreren Registerkarten besteht, jeweils in Spalte "M" (also 13) miteinander verglichen und doppelte Daten rot markiert werden sollen.
Nun zum Problem: Da sich die Datei geändert hat, zwei Spalten weniger, war die ursprüngliche Programmierung auf "O" (15) ausgelegt und hat wunderbar funktioniert.
Habe ich beim Ändern auf "M" und die 13 eventuell irgendetwas übersehen? Bin Programmierlaie.
Vielen Dank, parza
Nun der Code:
Dim strVergleich As String
Dim intActiveSheet As Integer
Dim intAnzahl As Integer
Dim lngLast As Long
Dim i As Long
Dim x As Long
Application.ScreenUpdating = False
Application.EnableEvents = False
'Vergleichen und farbig stellen
With ThisWorkbook
For intAnzahl = 1 To .Worksheets.Count
lngLast = .Worksheets(intAnzahl).Cells(Rows.Count, 13).End(xlUp).Row
For intActiveSheet = 1 To .Worksheets.Count
If intActiveSheet intAnzahl Then
For i = 1 To lngLast
If .Worksheets(intAnzahl).Cells(i, 13).Value "" Then
strVergleich = .Worksheets(intAnzahl).Cells(i, 13).Value
For x = 1 To Worksheets(intActiveSheet).Cells(Rows.Count, 13).End(xlUp).Row
If strVergleich = Worksheets(intActiveSheet).Range("M" & x).Value Then
.Worksheets(intAnzahl).Cells(i, 13).Font.Color = vbRed
GoTo ENDE
End If
Next x
End If
ENDE:
Next i
End If
Next intActiveSheet
Next intAnzahl
End With
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten vergleichen und doppelte markieren
08.10.2017 12:08:31
Sepp
Hallo parza,
ohne jetzt auf den anderen Code einzugehen, würde ich es so lösen.
' **********************************************************************
' Modul: Modul2 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub vergleich()
Dim objWS As Worksheet, objAllWS As Worksheet
Dim objColor As Range, objFind As Range, objValue As Range, objCell As Range

Const lngColumn As Long = 13

On Error GoTo ErrorHandler

For Each objAllWS In ThisWorkbook.Worksheets
  Set objValue = objAllWS.Columns(lngColumn).SpecialCells(xlCellTypeConstants)
  For Each objWS In ThisWorkbook.Worksheets
    If Not objWS Is objAllWS Then
      Set objColor = Nothing
      For Each objCell In objValue
        Set objFind = objWS.Columns(lngColumn).Find(what:=objCell.Value, LookIn:=xlValues, _
          Lookat:=xlWhole, MatchCase:=False, SearchFormat:=False)
        If Not objFind Is Nothing Then
          If objColor Is Nothing Then
            Set objColor = objFind
          Else
            Set objColor = Union(objColor, objFind)
          End If
        End If
      Next
      If Not objColor Is Nothing Then objColor.Font.Color = vbRed
    End If
  Next
Next

ErrorHandler:

If Err.Number <> 0 Then
  MsgBox "Fehler in Modul2" & vbLf & vbLf & "Prozedur:" & vbTab & "vergleich" & vbLf & _
    "Nummer:" & vbTab & Err.Number & vbLf & "Meldung:" & vbTab & Err.Description & vbLf & _
    IIf(Erl, "Zeile:" & vbTab & Erl, ""), vbExclamation, "Fehler!"
  Err.Clear
End If

Set objAllWS = Nothing
Set objWS = Nothing
Set objColor = Nothing
Set objCell = Nothing
Set objValue = Nothing
Set objFind = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Spalten vergleichen und doppelte markieren
08.10.2017 12:45:16
parza
Sepp,
vielen Dank. Ich glaube, es funktioniert perfekt. Finaler Test morgen in der Arbeit.
Noch zwei Fragen: Falls sich die Spalten wieder ändern sollten, ist die "13" entsprechend zu ändern?
Und es kommt folgende Meldung:
Fehler in Modul 2
Prozedur: vergleich
Nummer: 1004
Meldung: Keine Zellen gefunden.
Hierzu ein Hinweis: In der Excel-Datei Modul 2 befindet sich ein zweites Makro zum Abspeichern auf einer externen Festplatte (die in der Arbeit ist: Dies ist der Code
Sub LP_Beamte()
Const Pfad As String = "F:\LP-Beamte\2017\"     'Abschließender Backslash!!!
Dim DatNam As String, DatExt As String
'2. Eine Message Box öffnet sich in der gefragt wird ob wirklich gespeichert werden soll.  _
Antwort Yes or No
DatNam = ThisWorkbook.Name                                        'Dateiname (ohne Pfad)
DatExt = Mid(DatNam, InStrRev(DatNam, "."))                       'Dateinamenerweiterung ( _
mit Punkt)
DatNam = Mid(DatNam, 1, InStrRev(DatNam, ".") - 1)                'Dateiname (ohne Pfad,  _
ohne Erweiterung)
DatNam = DatNam & Format(Now, "_DD.MM.YY_hh-mm") & DatExt    'neuer Dateiname
If MsgBox("Soll eine Kopie der Datei" & vbLf & ThisWorkbook.Name & vbLf & "unter" & vbLf &  _
_
Pfad & DatNam & vbLf & "abgelegt werden", vbYesNo) = vbYes Then
'3. Bei Yes: Die Datei wird mit dem akuellen Dateinamen plus Datum _
und Uhrzeit in den angegebenen Ordner gespeichert.
ThisWorkbook.SaveCopyAs Pfad & DatNam
End If
'4. Bei No: Abbruch
'5. ENDE
End Sub

Anzeige
AW: Spalten vergleichen und doppelte markieren
08.10.2017 13:08:32
Sepp
Hallo Parza,
die Meldung kommt, wenn in einer Tabelle die Spalte 13 leer ist.
So kommt keine Meldung.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub vergleich()
Dim objWS As Worksheet, objAllWS As Worksheet
Dim objColor As Range, objFind As Range, objValue As Range, objCell As Range

Const lngColumn As Long = 13 'Vergleichsspalte!

On Error GoTo ErrorHandler

For Each objAllWS In ThisWorkbook.Worksheets
  Set objValue = Nothing
  On Error Resume Next
  Set objValue = objAllWS.Columns(lngColumn).SpecialCells(xlCellTypeConstants)
  Err.Clear
  On Error GoTo ErrorHandler
  If Not objValue Is Nothing Then
    For Each objWS In ThisWorkbook.Worksheets
      If Not objWS Is objAllWS Then
        Set objColor = Nothing
        For Each objCell In objValue
          Set objFind = objWS.Columns(lngColumn).Find(what:=objCell.Value, LookIn:=xlValues, _
            Lookat:=xlWhole, MatchCase:=False, SearchFormat:=False)
          If Not objFind Is Nothing Then
            If objColor Is Nothing Then
              Set objColor = objFind
            Else
              Set objColor = Union(objColor, objFind)
            End If
          End If
        Next
        If Not objColor Is Nothing Then objColor.Font.Color = vbRed
      End If
    Next
  End If
Next

ErrorHandler:

If Err.Number <> 0 Then
  MsgBox "Fehler in Modul2" & vbLf & vbLf & "Prozedur:" & vbTab & "vergleich" & vbLf & _
    "Nummer:" & vbTab & Err.Number & vbLf & "Meldung:" & vbTab & Err.Description & vbLf & _
    IIf(Erl, "Zeile:" & vbTab & Erl, ""), vbExclamation, "Fehler!"
  Err.Clear
End If

Set objAllWS = Nothing
Set objWS = Nothing
Set objColor = Nothing
Set objCell = Nothing
Set objValue = Nothing
Set objFind = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Spalten vergleichen und doppelte markieren
08.10.2017 13:28:25
parza
Hallo Sepp,
danke dir für deine schnelle Antwort; jetzt markiert er alles in den Spalten 13 rot.
In dem Fall würde ich bei deinem ersten Vorschlag bleiben. Es stimmt, dass eine Registerkarte in Spalte 13 leer ist. Soll ich einfach einen Platzhalter einfügen?
Lieben Gruß, parza
AW: Spalten vergleichen und doppelte markieren
08.10.2017 13:32:06
Sepp
Hallo Parza,
also bei mir funktioniert es, kannst du deine Testdatei hochladen?
Gruß Sepp

AW: Spalten vergleichen und doppelte markieren
08.10.2017 13:48:08
parza
Hallo Sepp,
das ist eigenartig. Ich hab eine Testdatei zum Hochladen erstellt; hier funktioniert es auch.
D.h. das Problem liegt woanders. Eventuell auch der Grund, warum die ursprüngliche Programmierung nicht klappt. Bin aber ratlos.
Wie gesagt, ich kann mit der ersten Lösung gut leben. Ist ja nur ein Klick.
Lieben Gruß, parza
Anzeige
AW: Spalten vergleichen und doppelte markieren
08.10.2017 13:50:28
Sepp
Hallo Parza,
du musst aber wissen, dass die Spalten nach dem Fehler nicht mehr abgearbeitet werden.
Stehen in Spalte 13 Werte oder Formeln?
Gruß Sepp

AW: Spalten vergleichen und doppelte markieren
08.10.2017 13:59:20
parza
Nein, nur 8-stellige Zahlen. Macht die Formatierung (Text, Standard oder Zahl) einen Unterschied.
Die absolut leere Registerkarte ist die letzte, also nicht weiter tragisch. Aber es steht nicht in jeder Zeile der Spalte 13 ein Wert. Manche sind leer.
parza
AW: Spalten vergleichen und doppelte markieren
08.10.2017 14:03:31
Sepp
Hallo Parza,
mein zweiter Code macht genau das gleiche wie der erste, nur eben mit Prüfung, ob die Spalte leer ist.
Gruß Sepp

Anzeige
AW: Spalten vergleichen und doppelte markieren
08.10.2017 14:24:40
parza
Hallo Sepp,
ich habe keine Ahnung, woran es liegt, aber mit der Fehlermeldung klappt es, ohne werden alle 13er Spalten rot (bis auf ein paar wenige, die schwarz bleiben). Es ist das gleiche Phänomen wie bei der anderen Programmierung, auch dort die meisten rot und ein paar wenige schwarz. Hab es zwar nicht explizit überprüft, aber ich glaube, es sind die gleichen Zahlen.
Ich möchte dich eigentlich nicht weiter nerven, da ich auch nichts zur Lösung beitragen kann.
Wie gesagt in der Testdaei zum Hochladen ohne die anderen, gelöschten Daten (sensibel aus Datenschutzgründen) funktioniert es auch.
LG, parza
Anzeige
AW: Spalten vergleichen und doppelte markieren
08.10.2017 15:48:49
Sepp
Hallo Parza,
ohne anonymisierte Originaldaten kann ich die nicht weiterhelfen.
Gruß Sepp

318 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige