[ chuPavi @ 12.09.2007. 14:52 ] @
Imam datume u sledecem formatu:
Code:

15102002
21102002
30092002
07102002
31072002
30092002


Koja excelova ili vba funkcija konvertuje ovaj string u, njemu, prepoznatljiv date format ?
[ Brz_na_tastaturi @ 12.09.2007. 15:32 ] @
Funkcija DATE(godina,mesec,dan)

u tvom slučaju ako se podatak nalazi u ćeliji A1

=DATE(RIGHT(A1,4),MID(A1,3,2),LEFT(A1,2))
[ 3okc @ 12.09.2007. 17:40 ] @
Razne su varijante na koje možeš "pocepati" tekstualni podatak ili string --pogledaj u HELP-u grupu f-ja za rad sa stringovima, a ovo je moguće čak i bez f-je. Selektuj prvo grupu ćelija sa datumima pa otvori Data / Text to Columns..., izaberi Fixed width / Next i dobićeš dijalog sličan ovom:
[att_img]
kada mišem obeležiš mesta na koja želiš da "cepaš" podatke. Za kraj još samo Finish.

Jednom kad podatke ovako odvojiš, datum možeš da kreiraš sa f-jom DATE(year,month,day); u argumente, dakle, pišeš podatke koje si prethodnim postupkom razdvojio.

Ako ti je ovo "komplikovano", to isto ćeš postići već pomenutim f-jama za manipulisanje stringovima; LEFT() za dva leva karaktera, MID() za središnji deo i RIGHT() za četiri desna karaktera, kako ti je Brz_na_tastaturi već preporučio. --Takođe, pogledaj HELP za detalje, koji su argumenti itd.

Postoji i druga f-ja, DATEVALUE(date_text) koja transformiše datum u brojni format kada je zapisan u tekstualnom obliku, "1. jan '77" i tsl. Problem je što tekst koji ti imaš nije pravilno zapisan datum pa to prethodno moraš doterati; recimo, f-jom TEXT(), ovako nekako:
Code:
=DATEVALUE(TEXT(A1;"00-00-0000"))
[ chuPavi @ 14.09.2007. 08:23 ] @
Znaci resenje mi je, ipak, bilo ispred nosa.
Iako sam pregledao sve date funkcije nisam shvatio da =date() moze da mi pomogne.
U mojoj slobodnoj, na brzinu shvaceno, interpretaciji ta funkcija je samo "vracala" numericku vrednost datuma.

E sad, dal postoji VBA date funkcija koja radi istu, slicnu , stvar ili je normalno i preporucljivo da korisitim ovu excelovu u te svrhe ?

Ja sam, trenutno, nesto ovako zbrljao :
Code:

Range("d1").Formula = "=IF(LEN(C1)=7,0&C1,C1)"
Range("e1").Formula = "=DATE(RIGHT(d1,4),MID(d1,3,2),LEFT(d1,2))"


Prva linija je bila neophodna jer prilikom import-a *.lp fajla datu kolonu prepoznaje kao number pa automatski "odseca" vodece nule. Meni, licno, je lakse da ovako resim problem nego da u import wizardu menjam tip polja.

[ Brz_na_tastaturi @ 14.09.2007. 08:38 ] @
Ako često vršiš taj import onda ti je bolja varijanta vba kod.
Pustiš snimanje makroa odradiš taj import i sva podešavanja koja su posle potrebna, zaustaviš snimanje, a sledeći put samo pokreneš makro i on 'sve sam uradi'.

ovo bi trebalo da moze i bez pomocnog polja
Range("d1").Formula = "=IF(LEN(C1)=7,0&C1,C1)"
Range("e1").Formula = "=DATE(RIGHT(d1,4),MID(d1,3,2),LEFT(d1,2))"

Range("e1").Formula = "=DATE(RIGHT((IF(LEN(C1)=7,0&C1,C1)),4),MID((IF(LEN(C1)=7,0&C1,C1)),3,2),LEFT((IF(LEN(C1)=7,0&C1,C1)),2))"
[ chuPavi @ 14.09.2007. 09:03 ] @
Ne radim cesto "Taj" import ali cesto importujem podatke.
Sada, konkretno, trebam da importujem 40 *.lp fajlova i, na slican nacin, da ih obradim.
Takoreci, jedini problem je u tome sto oni nose razlicita imena, pa mi klasicno snimanje macro-a ne bi koristilo.
Isprobao sam ispravljenu funkciju i prolazi ok.
A moze i malko jednostavnije:
=DATE(RIGHT(C6,4),MID(C6,3,2),LEFT((IF(LEN(C6)=7,0&C6,C6)),2))

[Ovu poruku je menjao chuPavi dana 14.09.2007. u 10:41 GMT+1]

[Ovu poruku je menjao chuPavi dana 14.09.2007. u 10:41 GMT+1]
[ Brz_na_tastaturi @ 14.09.2007. 13:24 ] @
Ako je jedini problem u različitom nazivu fajla, a sve ostale operacije sa fajlom su identične onda ti snimanje makroa može prilično ubrzati rad uz malu doradu koda da 'automatski' otvara potrebne fajlove.
Potraži "FileSearch" u helpu za početak.