Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Spalte A + B vergleichen und Übereinstimmungen in Spalte C schreiben
#31
Hallo, :19:

Array und Dictionary sollten hier am schnellsten sein - auch und gerade bei großen Datenmengen. :21:

.xlsb   Formel_und_VBA_zwei_Spalten_vergleichen.xlsb (Größe: 81,6 KB / Downloads: 7)
________
Servus
Case
[-] Folgende(r) 1 Nutzer sagt Danke an Case für diesen Beitrag:
  • anarchator
Antworten Top
#32
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
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • anarchator
Antworten Top
#33
Hi,

Zitat:Array und Dictionary sollten hier am schnellsten sein
Das hängt dann aber davon ab, ob mehr oder weniger doppelte gefunden werden.

Hier mal ein Variante die auch schneller sein kann als Dict.

.xlsb   Vergleich.xlsb (Größe: 19,05 KB / Downloads: 4)

Gruß Elex
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  • anarchator
Antworten Top
#34
(03.01.2019, 14:24)Elex schrieb: Hi,

Das hängt dann aber davon ab, ob mehr oder weniger doppelte gefunden werden.

Hier mal ein Variante die auch schneller sein kann als Dict.


Gruß Elex

auch sehr schön, danke! In meinem konkreten Anwendungsfall benötigt die Variante "Dict" 0,015625 Sekunden, die Variante "Filter" benötigt 0,11328125.
Das ist beides schnell genug für mich!  :19:
Antworten Top
#35
(03.01.2019, 14:24)Elex schrieb: Das hängt dann aber davon ab, ob mehr oder weniger doppelte gefunden werden.

Hallo Elex, :19:

man müsste mal vergleichen, Filter gegen Eintragungen per Array - im Moment sind es ja noch einzelne Eintragungen per Schleife.
________
Servus
Case
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste