Telefonszámunk: 1-472-0679

Szűrés struktúrált hivatkozással

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

5 bejegyzés megtekintése - 1-5 / 5
  • Szerző
    Bejegyzés
  • #2296
    szsipos
    Felhasználó

      Szép estét minden kedves erre tévedt érdeklődőnek.

      Az alapötlet az, hogy van egy táblázatom, ami termékazonosítókat és a termékekhez kapcsolt információkat tartalmaz. Létrehozok egy oszlopvektort bizonyos elemekből majd elnevezem azt (ha jól tudom, ekkor strukturált hivatkozással tudom használni a tömböt bármelyik olyan képletben ahol az excel kezeli a strukturált hivatkozásokat). Célom makrózni a szűrést, ugyanis a tömb elemei olykor több száz elemet is tartalmazhatnak, és ezek az elemek napi szinten változnak. Mellékelek egy fájlt is, ott VBA szerkesztővel megnézhető a probléma kiindulási állapotában. A technikai részével nem boldogulok sajnos.
      Bármilyen segítséget, tippet, trükköt, ötletet nagyon szívesen fogadok, és köszönök 🙂
      További szép napot mindenkinek.

      Szabolcs

      Attachments:
      You must be logged in to view attached files.
      #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.
        #2300
        szsipos
        Felhasználó

          Szia Imi

          Hálásan és nagyon szépen köszönöm a segítséget. Ez egy igazán szép megoldása a problémának, szépen működik. Gondolkodtam én is a megoldáson, de nekem csak a logikai váz volt meg, hogy mit szeretnék, a technikai háttérrel még időnként nem boldogulok. Ezúttal is tanultam a tömbökről és a VBA-ról 🙂
          Eszembe jutott még valami… Speciális szűrővel (Advanced filter) vajon működhetne a dolog? Vélemény?

          Szabolcs

          • A hozzászólás módosításra került: 9 years, 1 month telt el-szsipos.
          #2302
          horvimi
          Adminisztrátor

            Szia!

            Örülök, hogy működik.

            Igen, működne irányított szűrővel is. Ott nem kellene alakítgatni a számokat szöveggé, és csak egymás alá beírkálnád a szűrendő elemek kódjait, csak figyelve arra, hogy szöveges legyen.

            A kritérium tartománynál a dinamikus névtartomány kicsit módosul, mert itt kell a kritérium tartomány fejléce is.

            Tablazatnév[#All]
            Táblázatnév[#Mind]
            

            Imre

            #2303
            szsipos
            Felhasználó

              Szia Imi

              Örülök a válaszodnak! Az utolsó kérdésem csak elméleti jellegű volt, ki még nem próbáltam. De jólesik a megerősítés, hogy működne, a gondolat a cikkeid közt böngészve született 🙂
              Megcsinálom azt a verziót is, és elmentem magamnak, ki tudja. Később ha másért nem is, de a változatosság kedvéért és a problémamegoldás gyakorlására még jó lehet 🙂
              Köszönöm még egyszer a segítséget!
              Üdv

              Szabolcs

            5 bejegyzés megtekintése - 1-5 / 5
            • Be kell jelentkezni a hozzászóláshoz.