Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1644to1648
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 Hilfe benötigt

VBA Hilfe benötigt
13.09.2018 08:42:24
Renan
Hallo zusammen,
ich habe ein Makro geschrieben, dass alle einzigartigen Einträge in einem ListObject Column ausfindig macht und sie mir als Array zurückgibt.
Also wenn die ListObject Column "NAME" folgende Einträge einhält:
HANS
PETER
PETER
HANS
JÜRGEN
HANS
Wird mir als Array :
HANS
PETER
JÜRGEN
zurückgegeben.
Nun möchte ich mein Makro irgendwo so erweitern, dass es nicht nur die "einzigartigen Einträge" aus einer Tabellenspalte sondern aus mehreren Tabellenspalten ausgibt.
Als Beispiel
Tabelle 1: Spalte NAME:
HANS
PETER
PAUL
HANS
Tabelle 2: Spalte NAME:
JÜRGEN
HANS
PETER
Das Makro soll folgenden Array zurückgeben:
HANS
PETER
PAUL
JÜRGEN
Also einfach das gleiche Prinzip, nur tabellenübergreifend. Mit insgesamt 3 unterschiedlichen Tabellen (die Zufällig über die gleiche Spalte "Name" verfügen).
Hier ist mein aktuell funktionierendes Makro (funktioniert nur für eine Tabelle):
' Funktion: Durchsucht eine Spalte des Listenbereichs (Tabelle) nach unterschiedlichen Einträ _
gen und gibt diese in Form eines Arrays zurück
Function ListObjectFilter(WorksheetName As String, tblName As String, tblHeader As String) As   _
_
Variant
Dim dict As Object, tblColumn, j, myArray
Set dict = CreateObject("Scripting.Dictionary")
tblColumn = Worksheets(WorksheetName).ListObjects(tblName).ListColumns(tblHeader). _
DataBodyRange
With dict
For Each j In tblColumn
If Not (j = Empty Or .Exists(j)) Then .Add j, Empty
Next j
End With
myArray = dict.keys
ListObjectFilter = myArray
End Function

Kann mir jemand dabei weiterhelfen bitte? :)

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Hilfe benötigt
13.09.2018 12:49:22
Rudi
Hallo,
ruf die Function doch einfach 3x auf und sammele die Ergebnisse in einem Dictionary.
Schema:
Dim oERG As Object, x, i As Integer, Ausgabe
Set oERG = CreateObject("scripting.dictionary")
x = ListObjectFilter("aaaaa", "Tabelle1", "Name")
For i = LBound(x) To UBound(x)
oERG(x(i)) = 0
Next
x = ListObjectFilter("bbb", "Tabelle1", "Name")
For i = LBound(x) To UBound(x)
oERG(x(i)) = 0
Next
x = ListObjectFilter("cccc", "Tabelle1", "Name")
For i = LBound(x) To UBound(x)
oERG(x(i)) = 0
Next
Ausgabe = oERG.keys  

Gruß
Rudi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige