Napredni filter - nedelujoča koda VBA

Pomoč pri izdelavi makrov
Odgovori
VHJimmi
Prispevkov: 8
Pridružen: Sr Dec 06, 2006 5:46 pm

Napredni filter - nedelujoča koda VBA

Odgovor Napisal/-a VHJimmi »

Pozdravljeni...

Pri uporabi naprednega filtra imam težave in sicer z zapisano kodo VBA, katera v Excelu 97-2003 deluje, v Excelu 2010 pa naleti na težave in ne da nobenega rezultata.
Iz tabele z vsemi podatki (ID, datum, kg, km), želim izluščiti samo podatke, ki ustrezajo kriteriju od datuma do datuma.

A B C D E F G H I J K
id datum kg km Datum Datum
1 04.01.2018 10:56 2,5 101 04.01.2018 09:00 07.02.2018 08:00
2 05.01.2018 10:59 33,0 57
..
zapisana koda je bila:

Range("B10:D50000").Select
Range("B10:D50000").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= Sheets("data").Range("J1:K2"), CopyToRange:=Range("I10:K50000"), Unique:=False

Hvala za pomoč in odgovor.
Jimmi
Jimmi
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Napredni filter - nedelujoča koda VBA

Odgovor Napisal/-a admin »

Pozdravljeni,

Delovanje naprednega filtra se med verzijami Excela ni spreminjalo, zato sklepam, da težava ni v naprednem filtru temveč nekje drugje v vaši datoteki.

Svetujem vam, da ročno izvedete napredni filter ter preverite ali vrača rezultate.
lp,
Matjaž Prtenjak
Administrator
VHJimmi
Prispevkov: 8
Pridružen: Sr Dec 06, 2006 5:46 pm

Re: Napredni filter - nedelujoča koda VBA

Odgovor Napisal/-a VHJimmi »

Pozdravljeni...

Najprej hvala za odgovor.

Zanimivo je, da če ročno izberem obseg podatkov (B10:D50000), ki jih želim filtrirati, označim oz. izberem vse potrebno za napredni filter vljučno s kriterijem (J1:K2) in mesto kam želim filtrirane podatke prekopirati (I10:K50000), dobim to kar želim.

Če po istem postopku posnamem makro, sam v kodo zapiše enak zapis tega dela kode, kot sem ga zapisal že spodaj.
In če sedaj ponovno sprožim ta posneti makro, ne dobim nobenega rezultata (ostane mi le obarvan izbran obseg).

Sklepal sem, da je težava s kriterijem, kateri je zapisan kot datum z uro in sicer v celici E1 (od) 04.01.2018 10:00:00 in v celici E2 (do) 05.01.2018 09:00:00 (oz. v J1 in v K1 je zapisana beseda Datum, v J2 pa =">="&E1 v K2 pa ="<="&E2)
Podatki se filtrirajo glede na dan, teden, mesec, leto, izbran termin, izbrano obdobje..., tako da je na listu veliko takih sklopov v katerih je zapisan posamezen kriterij za posamezno napredno filtriranje.
napr. dan se začne 04.01.2018 00:00:01 in konča 05.01.2018 00:00:00
To je v Excelu 97-2003 delovalo brez težav.

V Excelu 2010 pa deluje le če so kriteriji podani samo kot datum (brez ur, minut in sekund) ter da zaradi tega je v kriteriju v celici K2 zapisano le ="<"&E2
Zato razmišljam v smeri, da morda obstaja še kak dodaten zapis h kodi, ki bi naprednemu filtru povedal da naj upošteva v kriteriju tudi zapisan čas poleg datuma.

Lep pozdrav
Jimmi
Jimmi
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Napredni filter - nedelujoča koda VBA

Odgovor Napisal/-a admin »

Pozdravljeni,

V VBA nikoli ne uporabljam filtrov saj lahko preko VBA preprosto sfiltriram podatke v zanki. Sedaj sem zatorej poskusil stvar tudi sam in ugotovil, da ima VBA z naprednimi filtri in datumi zares težave. Po dolgem preizkušanju različnih opcij sem ugotovil da pomaga, če datume v filtru zapišete tako, kot jih interno vidi Excel.

Torej podatki, ki jih filtrirate so lahko zapisani v SLO obliki (DD.MM.YYYY hh:mm), vendar pa morate filtrirni pogoj zapisati v ENG obliki, torej kot MM/DD/LLLL HH:mm. Pri meni je to pomagalo. Torej sprememba oblike datuma v filtru je pri meni delovala.

Sem šel tudi preko spleta in vidim da imajo z naprednimi filtri in VBA ljudje velike težave. Kot rečeno jaz v VBA nisem nikoli uporabljal naprednih filtrov in zato jih, glede na omenjene težave, tudi vam odsvetujem. Raje sami napišite ustrezno VBA kodo oz. zanko, ki gre skozi podatke in ugotovi ali zapis ustreza ali ne.
lp,
Matjaž Prtenjak
Administrator
VHJimmi
Prispevkov: 8
Pridružen: Sr Dec 06, 2006 5:46 pm

Re: Napredni filter - nedelujoča koda VBA

Odgovor Napisal/-a VHJimmi »

Pozdravljeni...

Hvala za vaš odgovor in potrditev.

Lep dan in še veliko uspehov vam želim.
Jimmi
Jimmi
Odgovori