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.

Unikate aus Tabelle in eine neue Spalte
#1
Hallo zusammen,
brüte gerade über einem Problem: Habe eine Tabelle mit mehreren Spalten. In allen Spalten (Zellen) befinden sich Namen. Aus der gesamten Tabelle hätte ich nun gerne jeden Namen nur einmal.
Die Funktion "Duplikate löschen" klappt nur mit einer Spalte. Beim Spezialfilter hat er immer nach gleichen Zeilen gesucht, anstatt jede Zelle für sich zu vergleichen.
Kann jemand helfen? Meine Internetsuche war bisher erfolglos Sad

Gruß
Volker
Antworten Top
#2
Hallo Volker,

(14.12.2017, 12:09)l5w6ed schrieb: Die Funktion "Duplikate löschen" klappt nur mit einer Spalte.
Wie kommst Du darauf?

Lade bitte eine Beispieldatei hoch.
Gruß Jonas
Antworten Top
#3
Hi,

kopiere doch alle Spalten in eine einzige, dann kannste mit Duplicate löschen arbeiten…

Gruß Wastl
Antworten Top
#4
(14.12.2017, 12:18)Wastl schrieb: Hi,

kopiere doch alle Spalten in eine einzige, dann kannste mit Duplicate löschen arbeiten…

Gruß Wastl

Ist ne große Tabelle mit vielen Spalten. Das würde zu lange dauern. :17:
Antworten Top
#5
(14.12.2017, 12:16)Jonas0806 schrieb: Hallo Volker,

Wie kommst Du darauf?

Lade bitte eine Beispieldatei hoch.

So in etwa  Blush


Angehängte Dateien
.xlsx   Beispieltabelle.xlsx (Größe: 10,03 KB / Downloads: 6)
Antworten Top
#6
Hi,

dann hab ich eine VBAschnipsel in meinem Fundus:

Private Sub KeineDublikate()
Dim rngBereich As Range
Dim rngZelle As Range
Dim NoDups As New Collection
Dim Item As Variant
Dim vx(1 To 1048576, 1 To 1) As Variant
Dim I As Long

  'Bei Fehler weitermachen
  'Fehler tritt bei schon vorhandenem 'Key' in der Collection auf
  On Error Resume Next

  For Each rngBereich In Selection.Areas
    For Each rngZelle In rngBereich
      'Key = CStr(rngZelle.Value) muß einmalig sein, sonst Fehler
      'That's the trick!
      NoDups.Add rngZelle.Value, CStr(rngZelle.Value)
    Next
  Next

  'neues Blatt anlegen
  Sheets.Add Before:=Sheets(1)
  Columns(1).NumberFormat = "@"

  'jedes einmalige Element der Collection ausgeben
  For Each Item In NoDups
    I = I + 1
    vx(I, 1) = Item
'    ActiveCell.Offset(1, 0).Select
  Next
With ActiveSheet
    .Range(.Cells(1, 1), .Cells(I, 1)) = vx
End With
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an Wastl für diesen Beitrag:
  • l5w6ed
Antworten Top
#7
Hallo,

im Code steht


Code:
Dim vx(1 To 1048576, 1 To 1) As Variant

Besser ist es nur den nötigen Bereich zu übergeben


Code:
Ar = Range("A1:F12")


mfg
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • l5w6ed
Antworten Top
#8
Hallo,

da habe ich das Problem wohl falsch interpretiert. Hier eine Formellösung:

PHP-Code:
=INDEX($A$2:$F$9;WENN(REST(ZEILE(A1);7);REST(ZEILE(A1);7);8);AUFRUNDEN(ZEILE(A1)/8;)) 
Danach dann die Formel als Werte einfügen und normal Duplikate entfernen.
Gruß Jonas
[-] Folgende(r) 1 Nutzer sagt Danke an Jonas0806 für diesen Beitrag:
  • l5w6ed
Antworten Top
#9
Hi Fennek,

du hast sicherlich erkannt, das die von dir zitierte Zeile nur die Ausgabe dimensioniert.
der Eingabebereich wird zuvor von Hand mit der Maus oder sonstwie als ein zusammenhängender Bereich markiert, dann das Makro gestartet.
Das Ergebnis steht in einer neuen Tabelle, die vor dem aktuellen Blatt erzeugt wird.
Antworten Top
#10
Code:
Sub M_snb()
   With Cells(1).CurrentRegion.Offset(1)
      For j = 1 To .Columns.Count
        .Columns(j).AdvancedFilter 2, , Cells(Rows.Count, 8).End(xlUp).Offset(1), True
      Next
    End With
    Columns(8).AdvancedFilter 2, , Cells(1, 10), True
    Columns(8).Delete
End Sub
oder
Code:
Sub M_snb()
   sn = Cells(1).CurrentRegion.Offset(1).specialcells(2)
  
   For Each it In sn
     If InStr(c00 & "|", "|" & it & "|") = 0 Then c00 = c00 & "|" & it
   Next
   st = Split(Mid(c00, 2), "|")
   Cells(2, 8).Resize(UBound(st) + 1) = Application.Transpose(st)
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • l5w6ed
Antworten Top


Gehe zu:


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