2014-12-19 19 views
8

mam obok userform opracowany w VBA, która przyjmuje informacje z arkusza do wyświetlania informacjiSortowanie Arkusz danych według wartości kolumn przy użyciu Excel VBA

enter image description here

chcę zamówić wszystkie informacje aphabetically przez segment, jest to kod:

Function llenarDatosTabla() 

    Dim vList As Variant 
    Dim ws As Worksheet: Set ws = Worksheets(BD_PRODXSIST) 

    ListBox1.Clear 

    With ws 
     If (IsEmpty(.Range("AA2").Value) = False) Then 

      Dim ultimoRenglon As Long: ultimoRenglon = devolverUltimoRenglonDeColumna("A1", BD_PRODXSIST) 

      vList = ws.Range("AA2:AA" & ultimoRenglon & ":AL2").Value 

      If IsArray(vList) Then 
       Me.ListBox1.List = vList 
      Else 
       Me.ListBox1.AddItem (vList) 
      End If 

     End If 

     Me.ListBox1.ListIndex = -1 

    End With 




    Set vList = Nothing 
    Set ws = Nothing 
End Function 

jak zrobić to uporządkowane według kolumny "AD" (SEGMENTO) ???

Odpowiedz

9

można sortować arkusza programu Excel w kolejności rosnącej przy użyciu VBA jak oświadczenie następującej:

Columns("A:XFD").Sort key1:=Range("AD:AD"), order1:=xlAscending, Header:=xlYes 

Uwaga: w zakresie kolumny Columns("A:XFD") zamiast XFD wprowadź ostatnio używany kolumnę istotne dla sprawy, na przykład Columns("A:DD").

Mam nadzieję, że to pomoże.

+0

zadziałało !!! dzięki – Jesus

+0

Nie ma za co! Powodzenia w projekcie! Z poważaniem, –

+0

Hej czasami pojawia się ten błąd: 1004 w odwołaniu do sortowania czasu wykonania nie jest ważne – Jesus

5

Aby posortować tabelę danych, użyj Excelowych nazw w połączeniu z funkcją CurrentRegion. Jest to mniej ryzykowne niż trudne odniesienia do kolumn i można to zrobić w dwóch prostych krokach.

Powodem, dla którego lepiej jest podawać kolumny, jest to, że jeśli błędnie ustawisz kolumny lub później się zmienią, będziesz mieszać dane! Po wykonaniu sortowania komórki w dowolnych pominiętych kolumnach pozostaną w miejscu, w którym się znajdują, stając się częścią niewłaściwych wierszy. I to właśnie się stanie, jeśli dodasz kolejne kolumny później, chyba że zapamiętasz aktualizację VBA.

Oto dwa proste kroki do zastosowania tego podejścia. W tym przykładzie wybrałem tabeli danych z czterech kolumnach i czterech rzędach:

enter image description here

Będziemy sortować według Col3 malejącym. Komórki w pozostałych trzech kolumnach mają identyczne wartości, co pozwala nam łatwo zweryfikować, czy wszystkie są w prawidłowych wierszach.

Krok 1: wybierz komórkę w tabeli danych, że jest mało prawdopodobne, aby kiedykolwiek zostać usunięte, takie jak nagłówek kolumny, którą zamierzasz zrobić na stałe, i podaj nazwę dla tej komórki. Możesz zdefiniować nazwę, zaznaczając komórkę i wpisując bezpośrednio w polu Nazwa Excela nad arkuszem. Tutaj użyłem nazwę RegionTag:

enter image description here

razu, CurrentRegion można odwołać całą tabelę danych tylko z tego. Można zobaczyć go w akcji, jeśli kod linię VBA, aby wybrać tabelę:

Range("RegionTag").CurrentRegion.Select 

Jest to wynikiem:

enter image description here

To tylko dla ilustracji, pokazując siłę Nazwa/Kombinacja CurrentRegion. Nie musimy wybierać tabeli, aby ją posortować.

Krok 2: zdefiniować nazwisko, tym razem na kolumnę, którą chcesz sortować według:

enter image description here

upewnić, nazwa odnosi się do całej kolumny, wybrany klikając nagłówek kolumny , a nie tylko zakres komórek w kolumnie.

To wszystko! Z definicją tych dwóch nazw, możemy posortować tabelę danych bez dotycząca sobie z jego wierszy i kolumn, nawet jeśli bardziej dodawane są później:

Range("RegionTag").CurrentRegion.Sort _ 
    key1:=Range("SortCol"), order1:=xlDescending, Header:=xlYes 

Oto nasza tabela danych sortowane przy użyciu powyższej klauzuli:

enter image description here

Powiązane problemy