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

doppelte anzeige

doppelte anzeige
20.02.2023 16:54:33
Thomas
Hallo Excelfreunde,
mit diesem Macro:
'https://www.herber.de/forum/archiv/1768to1772/1770208_Duplikate_in_Msgbox_ausgeben.html
Dim Zelle As Range
Dim dic As Object
Dim X
ReDim Duplikate(0)
Set dic = CreateObject("Scripting.Dictionary")
For Each Zelle In Columns(1).SpecialCells(xlCellTypeConstants, 1)
dic(Zelle.Value) = dic(Zelle.Value) + 1
Next
For Each X In dic.Keys
If dic(X) > 1 Then
ReDim Preserve Duplikate(UBound(Duplikate) + 1)
Duplikate(UBound(Duplikate)) = X
End If
Next
If UBound(Duplikate) = 0 Then
MsgBox "keine Duplikate vorhanden"
Else
MsgBox "Duplikate: " & vbLf & Join(Duplikate, " ")
End If

kann man super doppelte Werte einer Spalte anzeigen.
Mein Problem ist, dass ich nur die ersten 3 Zeichen der Werte auf doppelt prüfen muss.
Das zweite Problem ist, dass manche Werte Zahlen sind und manche Texte.
z.B.
Die Werte "501" und "501_fd" sollen als doppelt ausgegeben werden ( in diesem Beispiel ist die 501 doppelt)
Bei meiner derzeitigen Änderung:
dic(CStr(Left(Zelle.Text, 3))) = dic(CStr(Left(Zelle.Text, 3))) + 1
wird das genannte Beispiel leider nicht als doppelt anerkannt.
Wie kann ich zum Ziel kommen?
Kann mir dabei jemand helfen?
mfg thomas

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: doppelte anzeige
20.02.2023 17:32:52
GerdL
Moin Thomas
Sub Unit()
    Dim Zelle As Range
    Dim dic As Object
    Dim X
    ReDim Duplikate(0)
    
    
    Set dic = CreateObject("Scripting.Dictionary")
    
    For Each Zelle In Columns(1).SpecialCells(xlCellTypeConstants)
        dic(Left(Zelle.Value, 3)) = dic(Left(Zelle.Value, 3)) + 1
    Next
    
    For Each X In dic.Keys
        If dic(X) > 1 Then
            ReDim Preserve Duplikate(UBound(Duplikate) + 1)
            Duplikate(UBound(Duplikate)) = X
        End If
    Next
    
    If UBound(Duplikate) = 0 Then
        MsgBox "keine Duplikate vorhanden"
    Else
        MsgBox "Duplikate: " & vbLf & Join(Duplikate, " ")
        dic.RemoveAll
    End If
    
    Set dic = Nothing
End Sub
Gruß Gerd
Anzeige
AW: doppelte anzeige
20.02.2023 18:24:39
Thomas
Hallo Gerd,
besten dank das du mir zum wiederholten mal hilfst.
Dein Vorschlag funktioniert jetzt bestens.
Ich hatte zwischenzeitlich vorhin noch irgendwo gelesen, das man es mal zusätzlich mit der Text- Eigenschaft versuchen kann.
Dies Kombiniert mit dein Vorschlag läuft das Makro jetzt fehlerfrei.
dic(Left(Zelle.Text, 3)) = dic(Left(Zelle.Text, 3)) + 1
hab besten dank für deine Unterstützung
mfg thomas

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige