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

Quicksort/Bubblesort. Hilfe bei Algorithmus

Quicksort/Bubblesort. Hilfe bei Algorithmus
27.12.2016 20:28:35
Max2
Hallo Leute,
ich möchte einen Betrag der Per InputBox eingegeben wird auf die drei am meisten vorkommenden Kostenstellen aufteilen.
Das Array lngCount() zählt wie oft eine bestimmte Kostenstelle vorkommt.
Das Array vKostenstelle() wird mit den Vorkommenden Kostenstellen befüllt.
Nun würde ich gerne ein zweidimensionales Array erstellen welches mit den Werten aus lngCount und vKostenstelle befüllt wird.
Die Werte dieses Arrays wollte ich dann per Quicksort oder Bubblesort der größe nach sortieren, so dass ich mir ganz einfach die ersten drei Einträge des neuen Arrays holen kann und den User Wert auf diese Aufteilen kann.
Ich habe allerdings erhebliche Probleme ein Quick- /Bubblesort Algorithmus für ein mehrdimensionales Array zu erstellen.
Könnt ihr mir helfen?
Hier Code:

Option Explicit
Dim i, x
Dim lngCount(), lngZeile As Long
Dim Kostenstelle() As String
Dim arr()
Dim wks As Worksheet
Dim c, rngBereich As Range
Dim vCountKst As Variant
Dim Low, High As Long
Dim vZahl, vTemp As Variant
Dim j As Long
Sub TK_Anschluss()
Application.ScreenUpdating = False
Set wks = ThisWorkbook.Sheets("Daten")
With wks
lngZeile = .Range(.Cells(.Rows.Count, 5), .Cells(2, 5)).Find( _
What:="*", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:= _
xlByRows, SearchDirection:=xlPrevious).Row
Set rngBereich = .Range(.Cells(2, 5), .Cells(lngZeile, 5))
x = 0
ReDim Preserve lngCount(x)
lngCount(x) = 0
ReDim Preserve Kostenstelle(x)
Kostenstelle(x) = "1004"
For Each c In rngBereich
If c.Value = Kostenstelle(x) Then
lngCount(x) = lngCount(x) + 1
Else
x = x + 1
ReDim Preserve Kostenstelle(x)
ReDim Preserve lngCount(x)
Kostenstelle(x) = c.Value
End If
Next c
Debug.Print LBound(lngCount)
Debug.Print UBound(lngCount)
End With
Application.ScreenUpdating = True
End Sub
Sub QuickSort()
If Low > High Then Exit Sub
vZahl = vCountKst((LBound(lngCount) + UBound(lngCount)) / 2)
i = LBound(lngCount): j = UBound(lngCount)
Do
Do While vCountKst(i)  vZahl
j = j - 1
Loop
If i  j
If (j - Low) 

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Quicksort/Bubblesort. Hilfe bei Algorithmus
27.12.2016 21:04:27
Fennek
hallo,
warum nuutzt du nicht "arraylist" aus den .NET - collections?
mfg
AW: Quicksort/Bubblesort. Hilfe bei Algorithmus
27.12.2016 21:14:15
Max2
Kenn ich noch gar nicht, danke, werde mich mal einlesen in das Thema :)
AW: Quicksort/Bubblesort. Hilfe bei Algorithmus
27.12.2016 22:21:52
Mullit
Hallo,
Du hast auch noch erhebliche Probleme mit der Var-Deklaration, die Variablen gehören in die jeweilige Prozedur, wenn sie nicht zwingend global zu deklarieren sind, außerdem sind bei Dir nur die letzten Variablen einer Zeile vom angegebenen Datentyp, alle übrigen sind vom Typ Variant, der Typ muß jedes Mal explizit angegeben werden, will man sauber proggen...
Option Explicit

Public Sub MeineProc()
Dim i As Long, x As Long
Dim lngCount() As Long, lngZeile As Long
Dim Kostenstelle() As String
Dim arr() As Variant
Dim wks As Worksheet
Dim c As Range, rngBereich As Range
Dim vCountKst As Variant
Dim Low As Long, High As Long
Dim vZahl As Variant, vTemp As Variant
Dim j As Long
'.....
End Sub

Gruß, Mullit
Anzeige
AW: Quicksort/Bubblesort. Hilfe bei Algorithmus
27.12.2016 22:55:26
Max2
Hey vielen Dank für deine Kritik!
Habe erst vor kurzem mit dem Programmieren angefangen und habe mir bis dato alles selbst angeeignet.
Ich weiß dass meine Codes nicht schön und nun wirklich nicht fehlerfrei sind!
Aber mir macht dass Programmieren riesen Spaß und ich will mich unbedingt verbessern!
Deswegen bin ich auch dem Forum beigetreten.
prima, willkommen im club..!..owT
27.12.2016 23:15:15
Mullit

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige