[ 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)
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.