Live-Forum - Die aktuellen Beiträge
Datum
Titel
15.07.2024 16:00:57
15.07.2024 15:41:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Werte in vba sortieren und doppelte löschen

Werte in vba sortieren und doppelte löschen
09.07.2013 15:36:52
Rene
Hallo,
ich weiß, so ähnliche Beiträge sind schon mal gepostet wurden. Aber ich bin leider aus den Archivbeiträgen nicht schlau geworden .... leider.
Ich habe folgendes Problem: Ich habe eine Liste, die auch dynamisch gefüllt wird.
Die Werte aus der Liste (Zelle A3, A4, A5, .... ) möchte ich als Listenwerte in eine bestimmte Zelle eingeben.
Die Listenwerte bestimme ich mit:
Sub Makro4()
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, _
Formula1:="Wert1,Wert2,Wert3"
End With
End Sub

Für mich ist jetzt nur die Frage, wie bekomme ich die Werte aus meiner ursprünglichen Liste da rein. Achtung: die Werte aus der Ursprungsliste können doppelt vorkommen und sind unsortiert.
Es sind auch nicht allzu vielle Werte (maximal 1.000), so dass selbst ein bisschen umständlicher Allgorhytmus das seine tun sollte. Ich will / muss ihn halt nur verstehen.
Vielen Dank für alle Tipps.

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte in vba sortieren und doppelte löschen
09.07.2013 16:40:48
Rudi
Hallo,
Option Explicit
Sub aaa()
Dim objList As Object, arrList, rngC As Range
Set objList = CreateObject("Scripting.dictionary")
For Each rngC In Range(Cells(3, 1), Cells(Rows.Count, 1).End(xlUp))
objList(rngC.Value) = 0
Next
arrList = objList.keys
QuickSort arrList
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, _
Formula1:=Join(arrList, ",")
End With
End Sub
Sub QuickSort(ByRef DasArray, Optional ErsteZeile, Optional LetzteZeile)
On Error Resume Next
Dim UnterGrenze As Long, OberGrenze As Long
Dim AktuellerWert, GemerkterWert As Variant
If IsMissing(ErsteZeile) Then
ErsteZeile = LBound(DasArray, 1)
End If
If IsMissing(LetzteZeile) Then
LetzteZeile = UBound(DasArray, 1)
End If
UnterGrenze = ErsteZeile
OberGrenze = LetzteZeile
AktuellerWert = DasArray((ErsteZeile + LetzteZeile) / 2)
Do While (UnterGrenze  AktuellerWert And OberGrenze > ErsteZeile)
OberGrenze = OberGrenze - 1
Loop
If (UnterGrenze  ErsteZeile) Then Call QuickSort(DasArray, ErsteZeile, OberGrenze)
If (UnterGrenze 

Gruß
Rudi

Anzeige
AW: Werte in vba sortieren und doppelte löschen
10.07.2013 06:42:23
Rene
Vielen Dank für den Code. Der funktioniert bei mir Super.
Allerdings ist meine Liste (jetzt etwa 500 Einträge) für die Aufnahme in das Listenfeld zu lang. Komisch. Wenn ich es 'per Hand' mache, dann klappt es nämlich. Gibt es hier per vba Beschränkungen?

AW: Werte in vba sortieren und doppelte löschen
09.07.2013 17:06:48
UweD
Hallo
Da der Ort deiner Liste ja scheinbar bekannt ist, kannst du dort doch bereits die Duplikate entfernen und sortieren Oder?
Ich habe mal angenommen die Daten stehen in Tabelle1 in Spalte K
Sub DUPP_raus()
Dim WB, Liste As Range
Set WB = ActiveWorkbook.Sheets("Tabelle1") 'anpassen
Set Liste = WB.Columns("K:K") 'anpassen
Liste.RemoveDuplicates Columns:=1, Header:=xlNo
With WB.Sort
.SortFields.Clear
.SortFields.Add Key:=Liste, SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortTextAsNumbers
.SetRange Liste
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, _
Formula1:="=" & Liste.Address
End With
End Sub
Gruß UweD

Anzeige
AW: Werte in vba sortieren und doppelte löschen
10.07.2013 06:43:10
Rene
vielen Dank für die Antwort. Hat bei mir aber nicht richtig funktioniert. Der zweite Beitrag aber sofort. Warum weiß ich nicht, aber ich konnte jetzt mal weiterarbeiten. Vielen Dank dennoch für die Mühe.

21 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige