Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
484to488
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
484to488
484to488
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Doppelte auflisten spezial

Doppelte auflisten spezial
16.09.2004 21:08:15
Gerd
Hallo Excellenzen,
ich muss von Blatt 1, Spalte A doppelt vorkommende Namen in Blatt 2, Spalte A
auflisten. In Spalte B vom Blatt 2 soll die Anzahl der jeweiligen Namen von
Blatt 1 ausgewiesen werden aber nur einmal.
Es geht um ca. 5000 Namen in Blatt 1.
Geht sowas mit Formeln und wenn ja, wie müssten diese aussehen?
Es ist auch eine VBA- Lösung willkommen.
Gruß Gerd

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Doppelte auflisten spezial
K.Rola
Hallo,
ich hoffe, ich habe dich richtig verstanden. Der Code muss in ein Standardmodul:
Option Explicit

Sub Doppelte_spezial()
Dim ws1 As Worksheet, ws2 As Worksheet, z1 As Long, z2 As Long
Set ws1 = Sheets("Tabelle1")
Set ws2 = Sheets("Tabelle2")
For z1 = 1 To ws1.[A65536].End(-4162).Row
If Application.CountIf(ws1.[A:A], ws1.Cells(z1, 1)) > 1 Then
If Application.CountIf(ws2.[A:A], ws1.Cells(z1, 1)) = 0 Then
z2 = ws2.[A65536].End(-4162).Row + 1
ws2.Cells(z2, 1) = ws1.Cells(z1, 1)
ws2.Cells(z2, 2) = Application.CountIf(ws1.[A:A], ws1.Cells(z1, 1))
End If
End If
Next
With ws2
.[a1] = "Unikat"
.[b1] = "Anzahl"
.Rows(1).Font.Bold = True
.[a:b].Columns.AutoFit
End With
End Sub

Gruß K.Rola
Anzeige
Danke, perfekt!!! OT
Gerd
oT
Zwischen Frage
17.09.2004 09:36:20
Basti
Hi K.Rola
For z1 = 1 To ws1.[A65536].End(-4162).Row
....
next
kannste mir das mal erklären, bin ja immer Wissensbegierig und mich interessieren solche Lösungen die ich nicht kenne.
Was du machst, mach ich immer mit Cells(x,y) und Do while Schleifen, aber so is es natürlich besser, da die do while zimlich doll auf den Speicher Schlagen.
Gruß Basti
AW: Zwischen Frage
Reinhard
Hi Basti,
ws1.[A65536].End(-4162).Row entspricht dem leichter lesbaren
ws1.[A65536].End(xlup).Row
Im Tabellenblatt wird auf die unterste Zelle in A (A65536) gegangen, dann durch das End(xlup) auf die von oben gesehen letzte beschriebene Zelle in A. Deren Zeilennummer wird dann zurückgegeben.
Problematik1:
wenn Zelle A65536 nicht leer ist wird ein falsches Ergebnis geliefert.
Problematik2:
egal ob Zelle A1 leer oder beschrieben ist, es wird immer eine 1 zurückgeliefert, wenn die Spalte leer ist oder nur A1 beschrieben. Dies führt dann bei zB.
ErsteFreieZelle=ws1.[A65536].End(xlup).Row + 1
zu einem Fehler wenn A1 leer ist.
Gruß
Reinhard
Anzeige
AW: Zwischen Frage
K.Rola
Hallo,
.[A65536].End(-4162).Row entspricht .[A65536].End(xlUp).Row
Bei diesem kurzen Code spielt es keine Rolle, bei langen Codes sind die Long-Werte
deutlich schneller als die benannten Argumente/Konstanten.
Gruß K.Rola
AW: Zwischen Frage
17.09.2004 12:54:57
Basti
.[A65536].End(xlUp).Row
kenn ich allerdings auch nich, also was ich jetzt verstanden hab:
Der zählt von der letzte Zeile aus Spalte A, bis er eine beschriebene Zeile findet ja?
Is das nuetzlicher als mit einer
Do While Schleifen von oben nach unten zu gehen?
Gruß Basti
AW: Zwischen Frage
K.Rola
Hallo,
nützlich kann beides sein, nur die Schleife ist um Längen langsamer.
Wann immer es geht, eingebaute Eigenschaften/Methoden verwenden, Schleifen
nur dann, wenns nicht anders möglich ist.
Gruß K.Rola
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige