Hei!
Olen kirjoittamassa koodinpätkää, joka suodattaisi dataa valittujen kriteerien perusteella. Käyttäjän ei siis tarvitsisi tehdä itse taulukkoa ja valita monien kymmenien sarakkeiden keskeltä haluttuja arvoja, vaan kriteerit voisi valita helposti erilliseltä välilehdeltä ja käynnistää makro napista.
Tällä hetkellä käyttäjä voi valita kolmesta eri sarakkeesta suodatettavia kriteerejä seuraavasti:
Sarake1 Sarake2 Sarake3
Kriteeri1 Kriteeri1 Kriteeri1 on yhtäsuuri tai pienempi kuin
Kriteeri2 Kriteeri2
Kriteeri3 Kriteeri3
Kriteeri4 Kriteeri4
Kriteeri5
Kriteeri6
Arvot sarakkeissa 1 sekä 2 ovat tekstiä ja sarakkeessa 3 numeroita.
-----------------------------------------------
Ratkaisuyritys 1 (silmukka):
Olen tehnyt yksinkertaisen silmukkarakenteen, joka piilottaa kaikki kriteereihin sopimattomat arvot, mutta se on ymmärrettävästi armottoman hidas suoritettaessa noin 8000 rivin datalle.
Ratkaisuyritys 2 (autofilter):
VBA:n autofilterissä voi asettaa vaan kaksi kriteeriä per sarake, joka on tässä tapauksessa liian vähän.
Ratkaisuyritys 3 (advanced filter):
VBA:n advanced filter on mielestäni liian kömpelö edellämainitun kriteeristön rakentamiseksi.
----------------------------------------------------
Olisiko teillä hyviä ehdotuksia nopeaan suodatukseen, vai pitääkö käyttäjän kuitenkin tyytyä vain taulukon luomiseen ja kriteerien valitsemiseen taulukon sarakkeista manuaalisesti?
Yst. VBNewbie
Onnistuin ratkaisemaan ongelman käyttämällä autofilteriä apusarakkeen avulla seuraavasti:
Sarake N | Sarake N + 1
Datarivi | Totuusarvo
Datarivi | Totuusarvo
Datarivi | Totuusarvo
Datarivi | Totuusarvo
Elikkä autofilterin avulla dataa suodatetaan sarakkeessa N + 1 olevan totuusarvon mukaan. Totuusarvo, eli osuuko datarivin arvot kriteereihin (TOSI/EPÄTOSI tai 1/0 jne.) taas haetaan kaavojen avulla käyttäjän tekemien valintojen perusteella.
Tällä tavalla kikkailemalla autofilterin kahden kriteerin rajoite voidaan helposti kiertää.
T. VBNewbie
Aihe on jo aika vanha, joten et voi enää vastata siihen.