[ toci @ 03.11.2014. 14:43 ] @
Ovo je Macro koji snimim:

Sub Macro3()
'
' Macro3 Macro
'
ActiveSheet.Range("$A$3:$O$13").AutoFilter Field:=1, Criteria1:= _
"2014 10 06 Mon"

End Sub

Ovo mi je izvestaj gde mi je poslednji dan bio 6 Oktobar 2014. Ja svakog dana dobijam neke nove podatke, tako da svakog dana treba da selektujem prethodni dan. Npr. danas je 3.Novembar 2014 i meni je potrebno da filtrira 02.Novembar 2014.
Kako da prepravim ovaj Macro, ili pak moze i neki novi koji ce da mi odradi posao?


[ Jpeca @ 03.11.2014. 16:09 ] @
Koliko razumem uslov za filtriranje je datum ali kao string u prvoj koloni. Moglo bi nešto ovako.
Code:

Sub ApplyFilter()
'
'  Na tekuci list primenjuje filter na prvu kolonu
'   Vrednost u koloni jednaka  prethnodni dan kao formatiran string
'
Dim rng As Range
Dim strKriterijum As String
'    Opseg podataka  za filter
 Set rng = ActiveSheet.UsedRange
 '  Priprema formatiranog stringa za prethodni da: Date -1
 '  Formatiran string sadrzi godinu mesec dan i dan u nedelji sve razdvojeno blankom
 strKriterijum = Format(Date - 1, "yyyy MM dd ") & WeekdayName(Weekday(Date - 1), 1, vbSunday)
 '  Postavlja se filter na prvu kolonu
 rng.AutoFilter Field:=1, _
               Criteria1:=strKriterijum

End Sub

Filtriranje se vrši po strKriterijum, a to se formira od date-1 u formatu kako sam ja razumeo sa slike

[Ovu poruku je menjao Jpeca dana 04.11.2014. u 17:45 GMT+1]
[ toci @ 04.11.2014. 15:45 ] @
Jpeca, nesto mi ne radi kako treba. Kada starujem macro, dobijem samo prazno, nije mi filtrirao prethodni dan! U prilogu slika (Capture2). Meni bi trebalo kao slika u prilogu (Capture3)

Ili, da pokusamo ovako. Danas je 4. Novembar. Slika u prilogu (Capture4). Ovo je izvorno kako dobijam podatke. Iz priloga se vidi da oni nisu sortirani npr. od A-Z, ali kada udjes na filter (pored SLICES) ima da se izabere datum, slika (Filter) u prilogu, sto bih ja zeleo da dobijem kada startujem macro, ali samo za poslednji dan koji se nalazi u izvestaju!

P.S. Da li je moguce da makro prepozna poslednji dan u izvestaju ako je danas 4. Novembar 2014, a ja udjem u neki stariji izvestaj gde je, recimo, poslednji dan za taj izvestaj 3. Oktobar 2014, i makro da mi samo izfiltrira 3. Oktobar?
[ Jpeca @ 04.11.2014. 16:43 ] @
Bilo bi dobro da umesto slika postaviš primer Excel tabel. Podatke možeš da ismisliš i skratiš. Ovako na osnovu slika teško je reći šta je problem ali moguće teksturalni oblik datuma.

Citat:
Da li je moguce da makro prepozna poslednji dan u izvestaju ...

To je jednostavno funkcija MAX kad je u pitanju datum. Problem je što su ovo stringovi koje treba prvo interpretirati kao datum pa onda naći Max.
[ toci @ 04.11.2014. 21:45 ] @
Vazi, Jpeca. Sutra cu, sa posla, poslati tabelu koju inace koristim, pa da pogledas!
[ toci @ 05.11.2014. 13:04 ] @
Evo, Jpeca, kacim tabelu!
[ Jpeca @ 05.11.2014. 14:26 ] @
Ubacio sam funkciju za odredjivanje poslednjeg datuma u koloni A i onda se taj datum koristi kao kriterujum.
Bilo bi možda čistije (i efikasnije) da se stringovi iz kolone A pretvore u datume, ali ovde sam ostaviio kao string i napravio "svoju" funkciju za maksimum

Meni to radi (ALT+F8, ApplyFilter). Ako kod tebe ne radi možda ima veze sa regionalnim setovanjem


[Ovu poruku je menjao Jpeca dana 05.11.2014. u 16:39 GMT+1]
[ toci @ 05.11.2014. 16:28 ] @
Radi i kod mene Jpeca. To je to sto mi treba! Hvala!

Probacu ovo na svim izvestajima, jos ova 2-3 dana, pa cu se oglasiti jos jedanputa za definitivan odgovor! Funkciju MAX, mogu li je obrisati, posto ne vidim dodirnih tacaka sa Sub?


Ipak je i f-ja MAX neophodna! :D


[Ovu poruku je menjao toci dana 06.11.2014. u 13:58 GMT+1]
[ Jpeca @ 07.11.2014. 11:56 ] @
Funkciju FindMax sam ubacio na osnovu tvog zahteva da se nađe poslednji "datum" u koloni.
Code:
dat = FindMax(rng.Resize(ColumnSize:=1))

Taj datum se onda uzima kao kriterijum za filter (umesto Date -1 kako je bilo prethodno)