Hallo
interessanter Psychologischer Effekt im Forum - es amüsiert mich köstlich .....
ein frohes neues Jahr an alle Kollegen, und ich bedanke mich für einen diskrten Hinweis auf einen Fehler in meinem Makro.
Stelle ein korrigiertes Makro ins Forum, damit es fehlerfrei laeuft. Bei mir fehlte nur die letzte Stelle bei Übereinstimmung!
Es gibt viele Programmierer die besser sind wie ich, mein grösstes Vorbild ist "snb" mit seinen legendaeren Einzeilern! Was für ein Fachwissen!
Mir faellt auf das immer wieder Kollegen in Threads hineingehen, weil sie es besser können. Das freut mich, denn für den Frager ist es von Vorteil ein noch besseres Makro zu bekommen. Das begrüsse ich immer. Ist euch aber aufgefallen das ich euch psychologisch geschickt in den Thread hole, weil ihr mich berechtigterweise übertrumpfen wolllt. Und selbstverstaendlich seit ihr zu Recht stolz darauf es besser zu können.
Schaut man auf das Endergebnis für den Frager habt ihr euren Stolz es besser gemacht zu machen, er profitiert davon! Dazu gratuliere ich euch von Herzen. Stört mich nicht. Manchmal werden sogar meine alten Makros bevorzugt, was vor allem snb aergern könnte, weil viele Frager VBA Anfaenger sind, die gehobene Technik nicht verstehen, aber meine alten Versionen geistig begreifen, und vor allem auf eigene Wünsche anpassen können.
Die Array Version ist eindeutig schneller. Mit Array habe ich nur wenig gearbeitet, und bei kleinen Datenmengen spielt es kaum eine Rolle.
So hat jeder im Forum seine eigene Nische, und mich freut es
(fern der Heimat) das ich hier mitmachen darf.
mfg Gast 123
Code:
Option Explicit '2.1.2019 Gast 123 für Clever Forum
'erstellt Namensliste in Spalte C
'Korrektur für fehlenden Name 12 4.1.2019
Sub Gleiche_Namen_auflisten()
Dim AC As Range, lz1, lz2, lz3 As Long
lz1 = Cells(Rows.Count, 1).End(xlUp).Row
lz2 = Cells(Rows.Count, 2).End(xlUp).Row
Application.ScreenUpdating = False
Columns(3).ClearContents 'Spalte C löschen
'Spalte A nach C kopieren, doppelte löschen
Range("A1:A" & lz1).Copy
Range("C1").PasteSpecial xlPasteAll
ActiveSheet.Range("C1:C" & lz1).RemoveDuplicates Columns:=1, Header:=xlNo
'Spalte B nach C kopieren, doppelte löschen
Range("B1:B" & lz2).Copy
Range("C" & lz1 + 1).PasteSpecial xlPasteAll '** lz1 +1 korrigiert 4.1.19
ActiveSheet.Range("C" & lz1 + 1 & ":C" & lz1 + lz2 + 2).RemoveDuplicates Columns:=1, Header:=xlNo
'Spalte C sortieren
Columns(3).Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
lz3 = Cells(Rows.Count, 3).End(xlUp).Row
Cells(lz3 + 1, 3).Value = "End"
'alle Einzelwerte löschen (Dublcat bleibt bestehen)
For Each AC In Range("C1:C" & lz3 + 2)
If AC.Offset(1, 0) <> AC.Value Then AC.Value = ""
Next AC
'Spalte C sortieren
Columns(3).Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
[c1].Select
End Sub