[VBA] Sortowanie bąbelkowe, problem z implementacją

Chungu
Użytkownik
Użytkownik
Posty: 121
Rejestracja: 21 paź 2016, o 20:57
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 42 razy

[VBA] Sortowanie bąbelkowe, problem z implementacją

Post autor: Chungu »

Witam.
Uczę się trochę VBA dla Excel i mam pewien problem w implementacji sortowania bąbelkowego. Otóż mam w 1 kolumnie w 40 wierszach czyli (1,1)(2,1)(3,1)... pewne imiona, która mam posortować zgodnie z algorytmem sortowania bąbelkowego.
Mój kod wygląda tak:

Kod: Zaznacz cały

Sub sorotwanie_babelkowe()
Dim i As Integer, z As String, k As Integer, kres As Integer
k = 39
Do
kres = k
k = 1
For i = 1 To kres
If Len(Cells(i, 1)) > Len(Cells(i + 1, 1)) Then
z = Cells(i, 1)
Cells(i, 1) = Cells(i + 1, 1)
Cells(i + 1, 1) = z
k = i
End If
Next i
Loop While k > 1
End Sub
Czy mógłby mi ktoś podpowiedzieć co jest tutaj źle???
Ostatnio zmieniony 15 gru 2016, o 13:40 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
OShon
Użytkownik
Użytkownik
Posty: 65
Rejestracja: 4 mar 2014, o 00:32
Płeć: Mężczyzna
Lokalizacja: VBATools | Kraków | Poland | Europe | Earth | SolSystem | SomewareInSpace
Podziękował: 1 raz
Pomógł: 7 razy

[VBA] Sortowanie bąbelkowe, problem z implementacją

Post autor: OShon »

Sortowanie bąbelkowe realizuje się na kolekcji i tablicach.
Często korzystam z bąbelkowego np w listach wyboru, choć nie jest to najszybsze sortowanie.

Na arkuszu tez się da, ale pętla musi być realizowana od dołu, ponieważ sortowanie polega na zamianie kolejności przez usunięcie pozycji i wrzuceniu jej o jeden wyżej. Zresztą nie ma to sensu, bo w arkuszu korzystasz z wbudowanego sortowania.

Kod: Zaznacz cały

With Cells
        .Sort Key1:=Range("A1"), Order1:=xlAscending, HEADER:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    End With
Użycie metody bąbelkowiej połączone z edycją komórki to zmarnowany czas na wykonanie działania kodem (trwa zbyt długo).
a4karo
Użytkownik
Użytkownik
Posty: 22206
Rejestracja: 15 maja 2011, o 20:55
Płeć: Mężczyzna
Lokalizacja: Bydgoszcz
Podziękował: 38 razy
Pomógł: 3753 razy

[VBA] Sortowanie bąbelkowe, problem z implementacją

Post autor: a4karo »

Mnie za to zastanawia dlaczego porównujesz długości zawartości komórek
ODPOWIEDZ