Telefonszámunk: 1-472-0679

Hozzászólás: Szűrés struktúrált hivatkozással

Kezdőlap Fórumok Excel programozás Szűrés struktúrált hivatkozással Hozzászólás: Szűrés struktúrált hivatkozással

#2298
horvimi
Adminisztrátor

    Szia!

    Nagy nehezen azt hiszem felfogtam mit szeretnél. Előre megadnád egy tartományba, hogy mikre szűrjön, és egy makró ezt megcsinálná. Mivel a listád változik, ezért dinamikus névtartományba tennéd.
    Ehhez pár dolgot helyre kell tenni.

    Először nézzük a dinamikus névtartományt.
    Ehhez elég, ha egy tartományba kiírod a szűrendő elemeket, legyen egy tetszőleges fejléce, majd táblázattá alakítod, végül elnevezed a táblázatot. Ezek után ez a név követni fogja a tartományt.

    Másodszor nézzük a tömböket a VBA-ban.
    Most csak röviden annyit, hogy ha scak egy dimenziós a tömböd, annak sornak kell lennie, nem oszlopnak. Emiatt a táblázatban lévő adatokat tranaszponálva kell betenni egy VBA tömbbe.

    Dim filter_array() As Variant
    filter_array = Application.Transpose(ActiveSheet.ListObjects("proba").DataBodyRange)

    Harmadszor a szűrésről
    ha rögzítővel felveszel egy autoszűrést, akkor azt látod, hogy a kijelölt elemek idézőjelek között lesznek. Ebből az következik, hogy az autoszűrés szöveges alapú, akkor is, ha számok vannak a szűrendő oszlopban. ez elég gáz, de úgy tűnik ez van.
    Ezért ha számokra szűrnél, a tömb minden elemét szöveggé kell alakítani. Ráadásul 8 karakteres szöveggé, hogy a vezető nullákat se veszítsd el. Ez egy ciklus.

    For i = 1 To UBound(filter_array) 'convert to string
            filter_array(i) = Format(filter_array(i), "00000000")
    Next i

    Ha ez megvan, akkor mehet az autoszűrés.
    ActiveSheet.Range("A1").CurrentRegion.AutoFilter Field:=1, Criteria1:=filter_array, Operator:=xlFilterValues

    Az egészet visszatöltöttem egyben, kicsit átalakítottam.

    Jelezz vissza, hogy OK-e!

    Imre

    Attachments:
    You must be logged in to view attached files.