Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[Solved] Sortowanie od lewej do prawej Excel VBA

RRyszardD 01 May 2020 12:41 351 10
  • #1
    RRyszardD
    Level 9  
    Czy mógłby któryś z kolegów spojrzeć i sprawić by to małe makro sortowało liczby do A 200 lub więcej, nie mam pojęcia jak to napisać, na ten moment sortuje tyko wiersz 2 w kol A do K.


    Code: vbnet
    Log in, to see the code
    [28-30.06.2022, targi] PowerUP EXPO 2022 - zasilanie w elektronice. Zarejestruj się za darmo
  • #3
    paweliw
    IT specialist
    Zgodnie z tytułem ma być to "od lewej do prawej" - cokolwiek to znaczy :)
    Dziwi mnie tylko brak jakiejkolwiek samodzielności, przecież w kodzie widać Range może by tak spróbować to zmienić ?
    Można tez nagrać makro i porównać różnice ...
    Ale może za dużo oczekuję ...
  • #4
    dt1
    Admin of Computers group
    Sądzę, że Autor może chcieć posortować wiersz po wierszu każdy wiersz w poziomie.
    Jeśli dobrze odczytałem zamiary Autora to ja bym to zrobił tak (być może ponownie wymyślając koło, bo być może są jakieś lepsze metody na zrobienie tego).

    Oczywiście będzie działać to tylko, jeśli w całym wierszu są tylko liczby, wyłoży się błędem, jeśli napotka jakąkolwiek wartość, która liczbą nie jest. Można zrobić, żeby zamiast wykładać się błędem ignorował taki wiersz - wystarczy w funkcji SortALL przed główną pętlą dodać linijkę On Error Resume Next.
  • #5
    RRyszardD
    Level 9  
    dzięki za zainteresowanie tematem ale chciałbym posortować w poziomie to są liczby z generatora liczb i chciałbym je posortować w poziomie tylko 200 wierszy w pionie bo tylko sortuje w jednym wierszu a po wstawieniu np 200 wierszy sortuje tylko ten jeden wiersz

    Dodano po 40 [minuty]:

    jest to generator liczb losowych
    kolega Dt1 pnapisal kod o cos takiego mi chodzilo ale wychodzi bląd" constant expression reguired
    DimArrMax (na niebiesko) zaznaczony a nie moge dodac załącznika do wgladu w formacie xlm poniewaz wyskakuje mi monit niedozwolone rozszerzenie pliku ?
  • #7
    RRyszardD
    Level 9  
    o archiwum nie pomyślałem podsyłam plik do wglądu może go jeszcze zmodyfikujesz, ale też muszę cie przeprosić bo dopatrzyłem się błędu w moim pliku (układ danych trochę się różni) i teraz działa na twoim kodzie za co ci serdecznie dziękuje bo o to mi chodziło
  • Helpful post
    #8
    dt1
    Admin of Computers group
    Z czego wynika niespójność zapisu danych w ostatnim arkuszu?
    W wierszu drugim są te dane zapisane koło siebie, kolumna po kolumnie. W wierszu trzecim między każdą kolumną jest przerwa. Czemu tak jest?

    Jeśli makro ma sortować wyniki z lotto to można je uprościć, nie musi liczyć do 100 pozycji w wierszu, tylko do sześciu, do tego nie musi liczyć na liczbach zmiennoprzecinkowych o podwójnej precyzji, może liczyć na liczbach całkowitych.
  • #9
    RRyszardD
    Level 9  
    już to poprawiłem w generatorze usunąłem puste komórki między liczbami i układ danych jest taki sam i i makro działa super,taki był zamysł by sortowało 100 lub więcej losować a kolumn tylko 6 .Po wylosowaniu np 100 losowań i porównaniem z baza losowań można wyciągnąć unikaty i próbować ,próbować ,próbować , takie małe hobby chyba że masz jakiś pomysł na ulepszenie działania tego prostego generatorka .Jeszcze raz bardzo dziękuje za zainteresowanie i pomoc w rozwiązaniu mojego problemu
  • Helpful post
    #10
    dt1
    Admin of Computers group
    Bardziej chodziło mi, że makro jest przygotowane na sortowanie nawet stu wartości w wierszu, Ty masz to do lotto, specyficznie do 6 liczb, więc Const MaxX możesz zmienić na 6 spokojnie, wtedy będzie brało pod uwagę tylko kolumny od A do F. Jeśli będziesz chciał sortować losowania z innych gier, gdzie załóżmy jest losowane 20 liczb, to wtedy można to zwiększyć.

    Również nie trzeba na liczbach ułamkowych pracować (co zmniejszy używane zasoby i przyspieszy makro, chociaż prawdę mówiąc przy tysiącach linii dopiero się zauważy różnicę) - deklarację tablicy do sortowania można zapisać po poprawce jako Dim Arr(MaxX) As Integer (w oryginale jest as Double, co przy liczbach całkowitych nie jest potrzebne).
  • #11
    RRyszardD
    Level 9  
    dt1 napisał prawidłowy kod