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

Array sortieren

Array sortieren
26.05.2017 08:43:24
Matthias
Hallo zusammen, :)
ich habe ein kleines Problem mit einem array. Dazu muss ich sagen, dass ich mit arrays noch nicht so fit bin... Aber die Anforderungen werden immer komplexer, also kommt man um diese nützlichen Datenfelder kaum rum. :)
Nun mein Problem:
Ich habe ein sheet, dass zeigt mir Fächer je Regal, die Abholung und die zugehörigen Artikel an.
Mein Problem ist, dass es nun Artikel gibt, die mehrmals in einer Zeile vorkommen. Ich will jetzt alle Artikelnummern in array einlesen, sortieren, die doppelten löschen und anschließend wieder ausgeben. Das einlesen ins array klappt bereits, jedoch scheitere ich dann am sortieren, doppelte löschen und ausgeben.
Ich hab schon diverse codes im Netz probiert, aber es klappt nicht.
Vielleich hat jemand von euch eine Idee, ich lade mal meine Beispielmappe hoch.
https://www.herber.de/bbs/user/113793.xlsm
Danke und Grüße

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array sortieren
26.05.2017 09:02:01
JoNNy
Hallo Matthias,
google doch mal nach Bubblesort :) das Prinzip kannst du einfach so übernehmen.
Und beim löschen kannst du mit einer For-Schleife oder While-Schleife(ich mag while mehr) immer zwei vergleichen und wenn die gleich sind dann einen davon 0 setzen und bei der Ausgabe machst dus dann so, dass du wieder mit while oder for alles ausgibst, aber mit eine If-Abfrage die fragt ob der Wert an der Stelle im Array 0 ist. Wenn ja dann gibst du natürlich nix aus.
Du musst aber aufpassen das du dann den Schleifen Zähler für die Zellposition wieder 1 zurückstellst da du ja sonst Lücken zwischendrinn hast.
Gruß JoNNy
Anzeige
AW: Möglichkeiten
26.05.2017 09:02:57
Fennek
Hallo,
m.W.n. gibt es folgende Möglichkeiten:
- Duplikate entfernen: Scripting.Dictionary, Arraylist
- sortieren: im Arbeitsblatt, Arraylist, SortedArray (pures vba: "bubble-sort")
Am einfachsten ist es, das Array in ein (neues) sheet zu kopieren und mit Arbeitsblatt-Funktionen zu sortieren und Duplikate entfernen. Ansonsten nach "Collection.Arraylist" und "Collection.SortedList" in den MS-Hilfetexten suchen.
mfg
(die *.xlsm Datei habe ich nicht geöffnet)
AW: Array sortieren
26.05.2017 09:15:59
Nepumuk
Hallo,
teste mal:
Option Explicit

Public Sub doppelteRaus()
    Dim lngRow As Long, lngColumn As Long
    Dim objArrayList As Object
    
    Set objArrayList = CreateObject("System.Collections.ArrayList")
    
    For lngRow = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        For lngColumn = 3 To Cells(lngRow, Columns.Count).End(xlToLeft).Column
            If Not objArrayList.Contains(Cells(lngRow, lngColumn).Text) Then _
                Call objArrayList.Add(Cells(lngRow, lngColumn).Text)
        Next
    Next
    
    objArrayList.Sort
    
    Range("L1").Resize(objArrayList.Count).Value2 = Application.Transpose(objArrayList.ToArray)
    
    Set objArrayList = Nothing
End Sub

Gruß
Nepumuk
Anzeige
AW: Array sortieren
26.05.2017 09:22:41
JoNNy
Hallo Nepumuk,
das klappt aber ich weiß nicht ob das so gewollt ist denn die Formulierung:
, doppelte löschen und ausgeben.

ist etwas zweideutig :).
Könnte sein das die doppelten gelöscht und ausgegeben werden sollen oder gelöscht und der Rest ausgegeben ;D.
Ich vermute zwar ersteres aber man kann nie wissen.
Gruß JoNNy
AW: Array sortieren
26.05.2017 09:33:47
Hajo_Zi
lasse den Fragesteller entscheiden ob offen.
Es ist Heute nicht mehr üblich eine Rückmeldung zu geben und so ist der Beitrag über 6 Tage offen.

AW: Array sortieren
26.05.2017 09:33:42
JoNNy
Hallo nochmal,
eine Frage:
wie funktioniert das ? :D
Ich hab zwar schon viel mit vba gemacht und würde behaupten ich könnte damit ziemlich viel umsetzten, aber bei der hälfte der "Befehle" die du verwendest weiß ich nicht was sie tun.
Kannst du mir das vllt grob erklären ? :))) *hundeblickmach*
Gruß JoNNy
Anzeige
AW: Array sortieren
26.05.2017 09:38:07
Nepumuk
Hallo JoNNy,
schau mal hier: https://msdn.microsoft.com/en-us/library/system.collections.arraylist(v=vs.110).aspx
Gruß
Nepumuk
AW: Array sortieren
26.05.2017 09:52:06
Matthias
Hallo zusammen,
erstmal danke für euer Feedback, ich werde das testen! Ziel ist es, dass nur eindeutige Werte übrig bleiben und die doppelten gelöscht werden. Durch eure Tipps ist mir aber aufgefallen, dass ich ein mehrdimensionales array verwende und überhaupt nicht brauche.
Danke schon mal :)
Grüße
Matthias
AW: Array sortieren
26.05.2017 10:04:33
JoNNy
Hallo Nepumuk,
irgendwie ist mir das nur so halb klar, denn was ist dann dieses Objekt das man erstellt.
Was kann es was enthält es?
Soll ich hierfür einen neuen Beitrag öffnen ?
Gruß JoNNy
Anzeige
AW: Array sortieren
26.05.2017 10:08:24
Nepumuk
Hallo JoNNy,
Soll ich hierfür einen neuen Beitrag öffnen ?
Mach das. Und frage gezielt.
Gruß
Nepumuk
AW: Array sortieren: da Zahlen, mit KKleinste
26.05.2017 11:36:20
Daniel
Hi
da deine Artikelnummern Zahlen sind, kannst du sie mit Hilfe der Funktion KKleinste (in VBA Worksheetfunction.Small) sortieren.
Die Duplikate vermeidest du, indem du mit Vergleich/Application:Match überprüfst, ob der Artikel im Zielarray schon vorhanden ist.
der Code dazu sieht so aus:
Sub doppelteRaus()
Dim arr
Dim z As Long
Dim i As Long
Dim Check
Dim rng As Range
Dim x
For z = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(z, 3)  "" Then
Set rng = Range(Cells(z, 3), Cells(z, 1).End(xlToRight))
ReDim arr(1 To 1, 1 To rng.Columns.Count)
i = 0
For s = 1 To UBound(arr, 2)
x = WorksheetFunction.Small(rng, s)
Check = Application.Match(x, arr, 0)
If VarType(Check) = vbError Then
i = i + 1
arr(1, i) = x
End If
Next
rng.Value = arr
End If
Next
End Sub
Gruß, Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige