MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 08.03.2018, 21:26   #1
MSSuffice
Neuer Benutzer
Neuer Benutzer
Standard VBA - Vergleich von Spalten - Codeoptimierung

Hallo nette Gemeinde

ich habe mir ein kleines Makro gebastelt, um den Inhalt der Zellen zu vergleichen. Es sind insgesamt 6 Spalten, wobei es jeweils 2 Spalten für den Vornamen, Nachnamen und das Geburtsdatum gibt. Kommen Unterschiede in den zu vergleichenden Spalten vor, dann werden diese farblich markiert. Funktioniert auch alles, aber bei sehr vielen Datensätzen dürfte diese Methode unter Excel doch ziemlich langsam werden.
Vielleicht könnte jemand mal den Code optimieren bzw. verbessern und mir die Optimierungen näher erläutern.

Danke!

Im Anhang ist ein kleines Bild, was das Ergebnis aufzeigt.

Code:

Sub Vergleich()
Dim Zeile As Integer
Dim Nachname As Integer
Dim Vorname As Integer
Dim Geburtsdatum As Integer
Dim Nname As Integer
Dim Vname As Integer
Dim GB As Integer

Zeile = 2
Nachname = 1
Vorname = 2
Geburtsdatum = 3
Nname = 4
Vname = 5
GB = 6

    ' Ungleiche Nachnamen, dann rot markieren
    Do
        If (Cells(Zeile, Nachname).Value <> Cells(Zeile, Nname).Value) Then
            Cells(Zeile, Nachname).Interior.Color = vbRed
            Cells(Zeile, Nname).Interior.Color = vbRed
        End If
        ' Ungleiche Vornamen, dann gelb markieren
        If (Cells(Zeile, Vorname).Value <> Cells(Zeile, Vname).Value) Then
            Cells(Zeile, Vorname).Interior.Color = vbYellow
            Cells(Zeile, Vname).Interior.Color = vbYellow
        End If
        ' Ungleiches Geburtsdatum, dann Türkis markieren
        If (Cells(Zeile, Geburtsdatum).Value <> Cells(Zeile, GB).Value) Then
            Cells(Zeile, Geburtsdatum).Interior.Color = vbCyan
            Cells(Zeile, GB).Interior.Color = vbCyan
        End If
        Zeile = Zeile + 1
        'Aussteigen, wenn die Zelle leer ist
    Loop Until Cells(Zeile, Nachname).Value = ""
    
End Sub
Angehängte Grafiken
Dateityp: jpg BeispielbildExcel.jpg (27,3 KB, 7x aufgerufen)
MSSuffice ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.03.2018, 22:06   #2
Scorefun
MOF Meister
MOF Meister
Standard

Warum keine bedingte Formatierung?

__________________

Gruss Ralf
======================================
Bitte keine PN Anfragen - Hilfe erfolgt nur im Forum!
======================================
Vorsicht Beim Ausprobieren...
Auch Chaotischer Code Entwickelt Sich Ständig
1) Intel I5-2500K, 4x3,3 Ghz, 8GB RAM, Asus P8P67, 250GB SSD Toshiba Q-Pro, 1,5TB HD, MSI GTX550TI, Win7-Prof 64-bit SP1, Office 2010 Plus SP1
2) Asus Zenbook Flip UX360UAK-C4203T, 13,3 Zoll, i5-7200U, 2,5 Ghz, 8GB RAM, 256GB SSD, Win10 Home 64-bit, Office 2016 Plus
Scorefun ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.03.2018, 00:07   #3
MSSuffice
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

ich habs noch nicht mit der bedingten Formatierung probiert und jetzt ärgere ich mich gerade damit rum irgendwie klappt es nicht so optimal bzw. es hängt schon an dem Vergleich der Namensspalte.
Vielleicht kannst Du ja mal einen Blick darauf werfen. Ich habe es als Anhang hochgeladen
Angehängte Dateien
Dateityp: xlsm Vergleichsübung.xlsm (9,6 KB, 6x aufgerufen)
MSSuffice ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.03.2018, 07:43   #4
Scorefun
MOF Meister
MOF Meister
Standard

Du hattest das schon fast richtig gemacht, aber die Spalten müssen fixiert werden mit dem Dollar-zeichen

=$A2<>$D2

__________________

Gruss Ralf
======================================
Bitte keine PN Anfragen - Hilfe erfolgt nur im Forum!
======================================
Vorsicht Beim Ausprobieren...
Auch Chaotischer Code Entwickelt Sich Ständig
1) Intel I5-2500K, 4x3,3 Ghz, 8GB RAM, Asus P8P67, 250GB SSD Toshiba Q-Pro, 1,5TB HD, MSI GTX550TI, Win7-Prof 64-bit SP1, Office 2010 Plus SP1
2) Asus Zenbook Flip UX360UAK-C4203T, 13,3 Zoll, i5-7200U, 2,5 Ghz, 8GB RAM, 256GB SSD, Win10 Home 64-bit, Office 2016 Plus
Scorefun ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.03.2018, 19:38   #5
MSSuffice
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Vielen Dank für deine Hilfe!
Das würde sich natürlich absolut als Alternative anbieten, alleine weil es relativ simpel ist.

Ich wäre nichts desto trotz auch an einer Lösung in VB interessiert bzw. die Lösung von mir in einer besseren Form überführt, da ich VB in Excel auch besser kennenlernen möchte.
Wie sehen denn da deine Kenntnisse aus?
MSSuffice ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.03.2018, 23:35   #6
MSSuffice
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Zitat: von Scorefun Beitrag anzeigen

Du hattest das schon fast richtig gemacht, aber die Spalten müssen fixiert werden mit dem Dollar-zeichen

=$A2<>$D2

Gestern dachte ich, dass ich es hätte mit der bedingten Formatierung, aber es passt doch noch nicht.
Was mach ich falsch?
Angehängte Dateien
Dateityp: xlsm Vergleichsübung.xlsm (9,7 KB, 4x aufgerufen)

Geändert von MSSuffice (10.03.2018 um 23:38 Uhr).
MSSuffice ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.03.2018, 00:50   #7
Scorefun
MOF Meister
MOF Meister
Standard

Du darfst halt vorher nur die Bereiche markieren, auf die die Formatierung zutreffen soll. Also in diesem Fall

A2:A5 + strg-Taste + D25

und dann die Formel rein
=$A2<>$D2

__________________

Gruss Ralf
======================================
Bitte keine PN Anfragen - Hilfe erfolgt nur im Forum!
======================================
Vorsicht Beim Ausprobieren...
Auch Chaotischer Code Entwickelt Sich Ständig
1) Intel I5-2500K, 4x3,3 Ghz, 8GB RAM, Asus P8P67, 250GB SSD Toshiba Q-Pro, 1,5TB HD, MSI GTX550TI, Win7-Prof 64-bit SP1, Office 2010 Plus SP1
2) Asus Zenbook Flip UX360UAK-C4203T, 13,3 Zoll, i5-7200U, 2,5 Ghz, 8GB RAM, 256GB SSD, Win10 Home 64-bit, Office 2016 Plus
Scorefun ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.03.2018, 17:52   #8
MSSuffice
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Danke! Es funktioniert gut, aber ich dachte, wenn ich die beiden Spalten ganz markiere, dann würde das auch gehen. Würde man eine dynamische Exceltabelle erhalten, die stetig wächst, dann müsste man im Vorfeld ausreichend markieren oder verstehe ich das falsch?
MSSuffice ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.03.2018, 18:32   #9
Scorefun
MOF Meister
MOF Meister
Standard

Zitat: von MSSuffice Beitrag anzeigen

wenn ich die beiden Spalten ganz markiere, dann würde das auch gehen.

Das hast Du aber nicht gemacht...

Zitat: von MSSuffice Beitrag anzeigen

Würde man eine dynamische Exceltabelle erhalten, die stetig wächst, dann müsste man im Vorfeld ausreichend markieren oder verstehe ich das falsch?

Man kann die bedingte Formatierung auch per VBA setzen

__________________

Gruss Ralf
======================================
Bitte keine PN Anfragen - Hilfe erfolgt nur im Forum!
======================================
Vorsicht Beim Ausprobieren...
Auch Chaotischer Code Entwickelt Sich Ständig
1) Intel I5-2500K, 4x3,3 Ghz, 8GB RAM, Asus P8P67, 250GB SSD Toshiba Q-Pro, 1,5TB HD, MSI GTX550TI, Win7-Prof 64-bit SP1, Office 2010 Plus SP1
2) Asus Zenbook Flip UX360UAK-C4203T, 13,3 Zoll, i5-7200U, 2,5 Ghz, 8GB RAM, 256GB SSD, Win10 Home 64-bit, Office 2016 Plus

Geändert von Scorefun (11.03.2018 um 18:38 Uhr).
Scorefun ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.03.2018, 11:26   #10
MSSuffice
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

kannst Du mir ein VBA-Beispiel für die bedingte Formatierungen für mein Excelproblem aufzeigen?
MSSuffice ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.03.2018, 13:11   #11
Scorefun
MOF Meister
MOF Meister
Standard

Könnte so aussehen
Code:

Sub SetzeFormatierung()

    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Tabelle1")
    Dim r As Long
    'Letzte Zeile ermitteln
    
    With ws
    
        r = .Cells(.Rows.Count, 1).End(xlUp).Row
        'Bestehende Formatierung löschen
        .Cells.FormatConditions.Delete
    
        'Erste neue Formatierung Nachname
        With .Range("A2:A" & r & ",D2:D" & r & "")
            .FormatConditions.Add Type:=xlExpression, Formula1:="=$A2<>$D2"
            .FormatConditions(.FormatConditions.Count).SetFirstPriority
            With .FormatConditions(1).Interior
                .PatternColorIndex = xlAutomatic
                .Color = 255
                .TintAndShade = 0
            End With
            .FormatConditions(1).StopIfTrue = False
        End With
    
        'Zweite Formatierung Vorname
        With .Range("B2:B" & r & ",E2:E" & r & "")
            .FormatConditions.Add Type:=xlExpression, Formula1:="=$B2<>$E2"
            .FormatConditions(.FormatConditions.Count).SetFirstPriority
            With .FormatConditions(1).Interior
                .PatternColorIndex = xlAutomatic
                .Color = 12611584
                .TintAndShade = 0
            End With
            .FormatConditions(1).StopIfTrue = False
        End With
    End With
End Sub

__________________

Gruss Ralf
======================================
Bitte keine PN Anfragen - Hilfe erfolgt nur im Forum!
======================================
Vorsicht Beim Ausprobieren...
Auch Chaotischer Code Entwickelt Sich Ständig
1) Intel I5-2500K, 4x3,3 Ghz, 8GB RAM, Asus P8P67, 250GB SSD Toshiba Q-Pro, 1,5TB HD, MSI GTX550TI, Win7-Prof 64-bit SP1, Office 2010 Plus SP1
2) Asus Zenbook Flip UX360UAK-C4203T, 13,3 Zoll, i5-7200U, 2,5 Ghz, 8GB RAM, 256GB SSD, Win10 Home 64-bit, Office 2016 Plus

Geändert von Scorefun (13.03.2018 um 13:14 Uhr).
Scorefun ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.03.2018, 12:32   #12
MSSuffice
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Vielen Dank für deine ausführliche und gute Hilfe!
MSSuffice ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:05 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.