Forum Coders' city Strona Gwna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UytkownicyUytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj si, by sprawdzi wiadomociZaloguj si, by sprawdzi wiadomoci   ZalogujZaloguj 

Potrzebuj szybkiej odpowiedzi na moje pytanie... Zasady

[Excel] Makro z filtrem zaawansowanym



 
Odpowiedz do tematu    Forum Coders' city Strona Gwna -> Oprogramowanie biurowe
Zobacz poprzedni temat :: Zobacz nastpny temat  
Autor Wiadomo
spoko_go



Doczy: 17 Lut 2017
Posty: 2

PostWysany: Pi Lut 17, 2017 5:36 pm  OP    Temat postu: [Excel] Makro z filtrem zaawansowanym Odpowiedz z cytatem Pisownia

Witam wszystkich.
Mam problem ze stworzeniem makra wykorzystujcego filtr zaawansowany. Mam tabelk gdzie w pierwszej kolumnie powtarzaj si pewne nazwy i chodzi mi o to, aby po przesortowaniu ich alfabetycznie oddzieli nazwy rnice si od siebie grubszymi poziomymi liniami. Robi to w sposb nastpujcy: uruchamiajc filtr zaawansowany w zakadce dane, klikam w zakres danych, zaznaczam pierwszy wiersz pierwszej kolumny i za pomoc ctrl+shift+strzaka w d zaznaczam ca kolumn, po czym klikam w "tylko unikatowe rekordy". Pniej zaznaczam grube linie, wyczam filtr zaawansowany i wszystko dziaa. Jednak problemem jest to, e ilo danych w mojej tabelce zmienia si, zalenie od wywoania konkretnego zlecenia. Wic jeli zrobi makro z filtrem na 20 wierszy, a wywoam zlecenie na na 30 wierszy, to te 10 mam nie oddzielone. Czy jest jaka formuka na to by filtr zaawansowany obejmowa dokadnie tyle wierszy ile potrzeba? Sam troch prbowaem, ale nie dziaa.
Kod:
Range("A1").Select
    Range(Selection, Selection.End(xlDown)).Select.AdvancedFilter Action:=xlFilterInPlace, Unique:=True
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThick
    End With
    Range(Selection, Selection.End(xlDown)).Select.AdvancedFilter Action:=xlFilterInPlace, Unique:=False
End Sub


Oczywicie jest moliwo zrobienia filtra na np. 1000 wierszy, ale ostatnio w firmie bya aktualizacja office'a na 2016 i wszystko strasznie muli.
Pozdrawiam
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
jacekq



Doczy: 13 Kwi 2006
Posty: 2199
Skd: Wrocaw

PostWysany: Pi Lut 17, 2017 10:48 pm      Temat postu: Odpowiedz z cytatem Pisownia

Uyj moe formatowania warunkowego. Nie bdzie potrzebne ani makro, ani dodatkowe kombinacje w arkuszu.
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Wylij email
hurgadion



Doczy: 06 Kwi 2011
Posty: 793
Skd: Web :)

PostWysany: Sob Lut 18, 2017 11:26 am      Temat postu: Odpowiedz z cytatem Pisownia

Hej,
udynamiczni filtr zaawansowany listujcy unikaty mona tak:
Kod:

Sub fromAtoF()
Dim a&

a = Cells(Rows.Count, 1).End(xlUp).Row
Range("A1:A" & a).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("F1"), Unique:=True
End Sub


Przetestuj jak to dziaa... Pozdrawiam... :)

_________________
miasto nauki praktycznej
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Odwied stron autora Numer GG
spoko_go



Doczy: 17 Lut 2017
Posty: 2

PostWysany: Sob Lut 18, 2017 3:38 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Dziaa jak naley. Wielkie dziki!;-)
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
karolinavb
Site Admin


Doczy: 25 Maj 2005
Posty: 7807

PostWysany: Sob Lut 18, 2017 9:32 pm      Temat postu: Odpowiedz z cytatem Pisownia

Naley wszake pamita, e:
Cytat:
a = Cells(Rows.Count, 1).End(xlUp).Row
Zmienna a
wskae waciwy wiersz o ile nie zajdzie przypadek, e uprzednio naoono ju jaki filtr i ostatnia komrka w wyniku tego filtru jest niewidoczna.
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
Wywietl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Gwna -> Oprogramowanie biurowe Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Moesz pisa nowe tematy
Moesz odpowiada w tematach
Nie moesz zmienia swoich postw
Nie moesz usuwa swoich postw
Nie moesz gosowa w ankietach
Moesz dodawa zaczniki na tym forum
Moesz pobiera pliki z tego forum




Debug: strone wygenerowano w 0.12111 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |