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

VBA Unikate aus einer Liste mit mehreren Spalten

VBA Unikate aus einer Liste mit mehreren Spalten
29.01.2020 10:50:55
Nico264
Hallo liebes Forum,
ich habe ein kleines Problem mit VBA. Ich habe eine Datei in der in einer Spalte bis zu drei Namen pro Zelle eingetragen werden. Diese werden per Zeilenumbruch untereinander geschrieben.
ICh habe im Forum diesen Code gefunden der die Namen trennt und in eine "Tabelle" mit bis zu drei Spalten aufteilt.
Hier der Code dazu:
Zellinhalt nach Zeilen-Umbruch trennen
'
Sub Auseinanderfuehren()
Dim lZeile   As Long     ' For/Next Zeilen-Index
Dim sTemp()  As String   ' tempor?res Array
Dim iSpalte  As Integer  ' For/Next Spalten-Index
Range("B1:Z50").ClearContents                     ' Ergebnisbereich l?schen
For lZeile = 1 To Range("A65536").End(xlUp).Row   ' Spalte A ab Zeile 1
Erase sTemp                                    ' Array l?schen
If InStr(Range("A" & lZeile).Value, Chr(10)) > 0 Then ' Carriage Return ?
sTemp = Split(Cells(lZeile, 1), Chr(10))    ' am CR splitten
ElseIf InStr(Range("A" & lZeile).Value, Chr(13)) > 0 Then ' Line Feed ?
sTemp = Split(Cells(lZeile, 1), Chr(13))    ' am LF splitten
Else                                           ' sonst
ReDim sTemp(1)                              ' Array dimensionieren
sTemp(0) = Range("A" & lZeile).Value        ' gar nicht splitten
End If
For iSpalte = 0 To UBound(sTemp)               ' das tempor?re Array auswerten
Cells(lZeile, iSpalte + 2) = sTemp(iSpalte) ' auf die Spalten ab B verteilen
Next iSpalte                                   ' n?chste Spalte
Next lZeile                                       ' n?chste Zeile
End Sub
ich möchte nun aus dieser Tabelle mit drei Spalten eine bereinigte Liste haben, in der jeder Name nur einmal vorkommt. denn dann könnte ich diesen Namen per Sverweis eine Mailadresse zuordnen und dann per Join Funktion als Emailempfänger eintragen lassen.
Ich bin leider nicht sehr erfahren mit VBA und hoffe ich habe es einigermaßen verständlich erklären können.
Vielen Dank und Gruß
Nico

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Unikate aus einer Liste mit mehreren Spalten
29.01.2020 11:32:56
Daniel
Hi
wenn du nicht erfahren mit VBA bist, dann machs doch einfach von Hand.
das Auftrennen der Namen in Spalten geht mit der Menüfunktion DATEN - DATENTOOLS - TEXT IN SPALTEN
um den Zeilenbruch als Trennzeichen einzugeben, musst du das Häkchen bei "anderes Trennzeichen" setzen und in dem Eingabefeld bei gehaltener ALT-Taste die Zeichenfolge "010" eingeben.
dann kopierst du die drei Spalten in eine Spalte untereinander und wendest das DATEN - DATENTOOLS - DUPLIKATE ENTFERNEN an.
dann hast du deine Einspaltige Liste mit allen Namen duplikatfrei.
ansonsten probier mal dieses Makro.
das erstellt die Duplikatfreie gesamtliste gleich in einem Schritt:
Sub Makro2()
Dim txtErg As String
Dim arrErg
Dim X, N
For Each X In Columns(1).SpecialCells(xlCellTypeConstants, 2)
For Each N In Split(X, vbLf)
If InStr(txtErg & "|", "|" & N & "|") = 0 Then txtErg = txtErg & "|" & N
Next
Next
txtErg = Mid(txtErg, 2)
arrErg = Split(txtErg, "|")
Cells(1, 3).Resize(UBound(arrErg) + 1, 1) = WorksheetFunction.Transpose(arrErg)
End Sub
Gruß Daniel
Anzeige
AW: VBA Unikate aus einer Liste mit mehreren Spalten
29.01.2020 11:53:15
Nico264
Hi Daniel,
dein Code funktioniert perfekt. Ich danke dir!
kannst du mir zufällig noch sagen was ich ändern muss, damit der Code erst ab Zeile 10 beginnt die Werte aus der Spalte mit den Namen zusammenzufügen?
Gruß Nico
AW: VBA Unikate aus einer Liste mit mehreren Spalten
29.01.2020 12:27:28
Daniel
Bei VBA-bescheiden solltest du das eigentlich selber können.
Ersetze einfach das Columns(1) durch den Zellbereich, der durchsucht werden soll (Range("A10:A100“))
Gruß Daniel

364 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige