[ vojvoda1010 @ 26.04.2019. 13:56 ] @

kako automatski da se unese podatak iz sheet 1 sa kriterijumom i da ga zampati u sheet 2.
u sheet 1 imam unos podatka c, d, e to su kriterijumi koje isto unosim ali se oni vec nalaze u sheet 2, a treba samo da unese u sheet 2 podatak iz f iz sheet 1
[ vojvoda1010 @ 26.04.2019. 22:19 ] @
Sada sam video da je delimicno resenje problema.

dodao sam jos dve kolone.

da li moze preko vba?

da li bi moglo kada se ponovi upis da se ne brise nego samo doda taj novi upis koji nije pre bio

npr. imao sam samo cenu, ali nisam imao radnika i tim, posle samo dodam samo radnika, ali da prethodni upis ne brise?
[ vojvoda1010 @ 28.04.2019. 23:00 ] @
Samo da potvrdim da li sam nasao resenje.

nisam uspeo da nadjem vba, ali vidim da nije interesantna tema.

negde na forumu sam nasao da ovo mogu uraditi preko data form.

zanima me da li u data form ima ogranicenja po broju unosa?
[ Jpeca @ 03.05.2019. 08:38 ] @
Koliko sam razumeo ovo je klasičan problem VLOOKU sa više kriterijuma. O tome je bilo reči više puta na forumu npr. http://www.elitesecurity.org/t...el-Vlookup-sa-vise-kriterijuma
Stadardno rešenje je da se formira pomoćna kolona (helper) u kojoj se iskombinuju kolone sa kriterijumima - C, D i E iz tvog primera i onda koristi VLOOKUP sa pomoćnom kolonom.
Ukoliko postoji jednostavno rešenje bez VBA ne znam zašto bi se koristio VBA, ali naravno da može.

[ vojvoda1010 @ 03.05.2019. 21:39 ] @
nisam definitivno dobro objasnio.

treba da iz sheet 1 unesem podatke u ocekivan rezultat, pa sledeci itd. ali na osnovu kriterijuma iz ocekivanog rezultata.

znaci iz sheet 1 iz celije f,g,h 6 unosim u ocekivani rezultat u kolone e, f, g.




e sad da li postoji malo bolje resenje od data form, u smislu da kada prilikom prvog unosa racuna broj 9, samo imam iznos f6 a nemam g,h6, a onda prilikom novog unosa racuna broj 9 sam nabavio te podatke ili podatak g,h6 ali da mi ne brise uneti vec f6, ali da samo spoji u odredjenom redu gde se nalazi f6 podatke ili podatak iz g, h6.


znaci da kazem prosto u pitanju data form sa critea

[ vojvoda1010 @ 03.05.2019. 21:43 ] @
http://www.elitesecurity.org/t246081-0#1480006


nesto najblize slicno ovome ali nije bas isto
[ vojvoda1010 @ 04.05.2019. 07:55 ] @
Mozda ovakva postavka:

ukoliko je podataka iz sheet 1 c6 (broj racuna) sadrzan u ocekivani rezultat u koloni b:b, dodaj podatke iz celije sheet 1 f6, g6, h6, u kolone ocekivani rezultat e:e, f:f, g:g, ali ako je podatak u celiama sheet 1 f6, g6, h6 prazan ne kopirati ga u kolone e:e, f:f, g:g. Novi unos.
Prilikom novog unosa ukoliko je nabavljen podatak koji nije bio prilikom prvog unosa sadrzan, odnosno prazan uneti ga u red gde se nalaze prethodni podaci.
ukoliko podatak iz sheet 1 c6 (broj racuna) sadrzan u ocekivani rezultat u koloni b:b izbaciti napomenu nema podatka
[ vojvoda1010 @ 10.05.2019. 07:24 ] @
Sub Macro1()
Sheets("Sheet2").Select
Range("B:B").Select
ActiveColumn.FormulaR1C1 = "=SUMPRODUCT((C[-1]=Sheet1!RC[-1])*(Sheet1!RC))"
Sheets("Sheet1").Select
Range("A11").Delete
End Sub





da li moze pomoc, gde je greska?
[ vojvoda1010 @ 15.05.2019. 07:57 ] @
u prilogu primer
[ Jpeca @ 15.05.2019. 12:38 ] @
U prilogu je rešenje, kako sam ja razumeo
1/ Kod unosa moguće je izabrati samo postojeće brojeve računa, a ne i neki novi broj
2/ Unos se vrši na posebnom listu i odatle se ažurira spisak računa klikon na dugme Unos - pokreće se VBA
3/ Nakon uspešnog unosa obrazac za unos se "čisti"
4/ Dodao sam validcije na obrazcu za unos
[ vojvoda1010 @ 15.05.2019. 20:45 ] @
Jpeca to je u principu to samo jos dve stvari,

1/ gde se nalazi poseban list za unos,
2/ da li moze kada ponovo unosim podatke za racun npr 11 da ne kopira sve podatke, vec samo uneti podatak, odnosno da ne kopira prazne celije?

konkretno sa racun 11 sam prilikom unosa prvog racuna imao samo datum, a kod drugog unosa (odnosno uploada) imam sada vreme i iznos i te podatke sada ubacujem da li moze da kopira samo vreme i iznos a da stari podatak zadrzi, tj da datum ne prekopira neko da ostane stari podatak?
[ Jpeca @ 16.05.2019. 08:31 ] @
Citat:
1/ gde se nalazi poseban list za unos

Nije mi jasno pitanje? Pa list Unos služi za to. Klikom na dugme "Unos" podaci se (zavisno od uslova) prenose na list Racuni.

Citat:
2/ da li moze kada ponovo unosim podatke za racun npr 11 da ne kopira sve podatke, vec samo uneti podatak, odnosno da ne kopira prazne celije?

Naravno da je moguće, ali mi treba malo preciznije
a/ Ako je na listu unos popunjen Datum, a datum ne postoji u odgovarajućem redu za račun - da li treba prikazati poruku upozorenja ili ne?
b/ Akoj je na listu unos popunje Datum i iznos, a u odgovarajućem redu za račun posotiji samo datum, prikazaće se poruka upozorenja.
Ako se portvri unos (OK dugme), datum će se uneti novi, ali šta se dešava sa iznosom - da li se menja?
Šta treba da se desi ako se na poruku upozorenja klikne Cancel - da li se unosi nepostojeći podatak?

Možda bi bilo bolje rešenje da se izborom broja računa iz padajuće liste na listu Unos, povuku svi postojeći podaci iz odgovarajućeg reda: Datum, Vreme, Iznos. pa korisnik može da menja unesene podatke ili unese nepostojeći. Ako neki podatak postoiji dugme bi se zvalo Ažuriraj, a ako je sve prazno Unos. U tom slučaju nema potrebe za porukom upozorenja?


[ vojvoda1010 @ 16.05.2019. 12:48 ] @



Naravno da je moguće, ali mi treba malo preciznije


a/ Ako je na listu unos popunjen Datum, a datum ne postoji u odgovarajućem redu za račun - da li treba prikazati poruku upozorenja ili ne?
Da.
b/ Ako je na listu unos popunje Datum i iznos, a u odgovarajućem redu za račun posotiji samo datum, prikazaće se poruka upozorenja.
Ako se portvri unos (OK dugme), datum će se uneti novi, ali šta se dešava sa iznosom - da li se menja?
Bez unosenja novog datum (bey kopiranja, stari datum ostaje) a iznos da se unese. Stari podatak ostaje a novi, odnosno nepostojeci da se kopira.

Šta treba da se desi ako se na poruku upozorenja klikne Cancel - da li se unosi nepostojeći podatak?
Moze ukoliko se ne unosi postojeci podatak.

Da li bi moglo ukoliko ne postoji racun da se isti doda?



2)
Možda bi bilo bolje rešenje da se izborom broja računa iz padajuće liste na listu Unos, povuku svi postojeći podaci iz odgovarajućeg reda: Datum, Vreme, Iznos. pa korisnik može da menja unesene podatke ili unese nepostojeći. Ako neki podatak postoiji dugme bi se zvalo Ažuriraj, a ako je sve prazno Unos. U tom slučaju nema potrebe za porukom upozorenja?

I ovo je odlicno resenje, ali mozda zbog kolicine podataka koji treba da se unesu, ne znam
[ Jpeca @ 17.05.2019. 11:25 ] @
Po ovim odgovorima koje si naveo ne postoji način da se jednom unesen podatak ažurira.
Napravio sam primer prema varijanti 2 - to mi se čini razumljivije za korišćenje
[ vojvoda1010 @ 17.05.2019. 12:43 ] @
Hvala Jpeca,

siguran sam da je ovo bolje.
[ vojvoda1010 @ 17.05.2019. 21:24 ] @
ipak promena pitanja, kako da dodam nova polja za podatke, npr. podatak obradjivac racuna?


da li moglo se dodati jos jedno dugme, za racune koji ne psotoje tj da se doda dugme ubaci novo, ili add?


[Ovu poruku je menjao vojvoda1010 dana 17.05.2019. u 22:36 GMT+1]
[ vojvoda1010 @ 11.10.2019. 18:09 ] @
Da li bi se u vba mogao dodati

skip blank,

ako da gde?
[ vojvoda1010 @ 11.10.2019. 21:23 ] @
u ovom delu


' Preuzmi vrednosti u obrazac
shUnos.Range("C3").Value = cl.Offset(0, 1).Value
shUnos.Range("C4").Value = cl.Offset(0, 2).Value
shUnos.Range("C5").Value = cl.Offset(0, 3).Value
' Promeni tekst na dugmetu


kako uneti skip blank
[ Jpeca @ 15.10.2019. 08:30 ] @
Nisam razumeo ideju. Šta treba da se preskoći? Da se izbace prazni redovi iz Drop down liste? Kako ćeš onda unositi nove račune?
[ vojvoda1010 @ 15.10.2019. 12:48 ] @
Kao sto je opcija u paste special da se stiklira skip blank.

Ideja je da ne kopira praznu celiju.
[ vojvoda1010 @ 15.10.2019. 12:51 ] @
Kao sto je opcija u paste special da se stiklira skip blank.

Ideja je da ne kopira praznu celiju.
[ Jpeca @ 15.10.2019. 14:55 ] @
I dalje mi nejasno.

Sada postoji grananje:
a/ da li je ceo red na listu računi prazan - Novi unos, sva polja se čiste
b/ ako je nešto u redu popunjeno - preuzimaju se podaci iz lista Računi i radi se izmena podataka

Pretpostavljam da ovao pod a/ ostaje?

Ako je ideja da u slučaju da podatak ne postaji na listu Računi u odgovarajućoj koloni, prilikom izmene b/ ostane prethodno upisan podatak na obrazcu za unos, onda bi moglo ovako:
Code:
shUnos.Range("C3").Value = IIf(Len(cl.Offset(0, 1).Text) = 0, shUnos.Range("C3").Value, cl.Offset(0, 1).Value)


Isto treba zameniti za sva polja u obrazcu. Sličnu proveru već imaš u funkciji koja ispituje da li je prazan red
Code:
 If Len(cl.Text) > 0 Then ...


Moram da priznam da bi mi takvo ponašanje prilikom unosa delovalo konfuzno.
[ vojvoda1010 @ 15.10.2019. 20:42 ] @
U prilogu ga sam dao 7 koraka kroy excel da jer nzm kako da stavim malu sliku.

U sheet racuni uvek je nepromeljiva kolona A, tj. racun broj, a ostale kolone su promenljive.

Ukoliko prilikom novog unosa u sheet racuni nema tog broja racuna npr. racun broj 100, isti se dodaje.

Kolone koje su promenljive se unose samo podaci koji su sadrzani u sheet unos, ukoliko nema podataka, tj.celija prayna ide se skip blank.

Promenljive mogu se se prelepljuju novim unosom ukoliko ima podatak u sheet unos

[ Jpeca @ 16.10.2019. 09:41 ] @
Citat:
Kolone koje su promenljive se unose samo podaci koji su sadrzani u sheet unos, ukoliko nema podataka, tj.celija prayna ide se skip blank.

U postojećoj postavci ako id postoji i izabere se iz liste, svi podaci se preuzimaju u listu unos, tako da ne vidim svrhu preskakanja praznih - jer ako nisu prazni u listu računi neće biti prazni ni na Unos?
Npr. scenario Unos 6, iz tvog primera
Ako se na listu unos izabere 12 iz drop down liste list unos izgledaće ovako (Racuni 5)

I nakon što se popuni iznos 1100 i klikne na dugme u odgovarajući red prepisaće se sve podaci iz lista Unos: postojeći koji nisu menjani (Vreme) i izmenjeni (Iznos).

Ako baš želiš već sam u prethodnom postu objasnio kako da izvedeš to što ti zoveš "skip blank". Obrati pažnju da izmenu vršiš u proceduri Button1_Click() - ne kako si ti naveo
Code:
 ' Popuni i preskoci prazna 
            cl.Offset(0, 1).Value = IIf(Len(shUnos.Range("C3").Text) > 0, shUnos.Range("C3").Value, cl.Offset(0, 1).Value)
            cl.Offset(0, 2).Value = IIf(Len(shUnos.Range("C4").Text) > 0, shUnos.Range("C4").Value, cl.Offset(0, 2).Value)
            cl.Offset(0, 3).Value = IIf(Len(shUnos.Range("C5").Text) > 0, shUnos.Range("C5").Value, cl.Offset(0, 3).Value)


Za dodavanje nepostojećeg treba dodati novi kod.
[ vojvoda1010 @ 20.10.2019. 22:30 ] @
imam par pitanja:

kako da ga otkljucam da bi ga prilagodio?
sta je i gde se nalayi Find(BrRacuna)?
sta je i gde se nalazi Dim shLista As Worksheet
[ Jpeca @ 21.10.2019. 09:22 ] @
Citat:
kako da ga otkljucam da bi ga prilagodio?


Ako si mislio na list Unos, jednostavno desni klik na jezičak lista ("Unos") i Unprotected Sheet - nisam stavio nikakvu lozinku

Citat:
sta je i gde se nalayi Find(BrRacuna)?

Find je postojeća Excel Range metoda koja traži vrednost unutar opsega


Citat:
sta je i gde se nalazi Dim shLista As Worksheet

shLista kao promenjiva tipa Worksheet postoji u procedurama AzrurirajPodatke i Button1_Click. Ta promenljiva koristi se za pristup listu "Računi"
Code:
Dim shLista As Worksheet
...
Set shLista = ThisWorkbook.Sheets("Racuni")
[ vojvoda1010 @ 21.10.2019. 12:39 ] @
kako da ga otkljucam da bi ga prilagodio?


Ako si mislio na list Unos, jednostavno desni klik na jezičak lista ("Unos") i Unprotected Sheet - nisam stavio nikakvu lozinku



To uradio ali mi ne da izmene i dalje.

I u vba izbrisao protect i nista, kada krenem da menjam ili dodajem stalno izbacuje ne moze se menjati zasticen je.



A sta je (BrRacuna) ? kako njega da prilagodim?
[ Jpeca @ 21.10.2019. 14:05 ] @
Na klik dugmeta pretražuje se list Racuni (Find sa BrRacuna kao parametorm )
BrRacuna je vrednost iz ćelije C2 na listu Unos:
Code:
 BrRacuna = shUnos.Range("C2").

Za nađeni broj računa upisuju uneti podaci u odgovarajući red


U prilogu je moja radna verzija gde sam otključao list unos. Nije mi jasno šta ne možeš da menjaš.

Ako imaš nameru da radiš sa VBA bilo bi dobro da kreneš iz početka - šta su varijable, funkcije, procedure, petlje, range objekat, kako se debaguje kod
Ima neki tutorial koje je već navođen ovde Djukanović: Programiranje kroz aplikacije
kao i Excel kuhinjica



[Ovu poruku je menjao Jpeca dana 21.10.2019. u 15:18 GMT+1]
[ vojvoda1010 @ 21.10.2019. 15:30 ] @
ne dozvoljava mi da fomatiram celiju gde je datum i vreme?


Sto se tice skripte uzimao sam ih vise ali bas, bas tesko za razumeti, ja bih licno imao molbu kada bi neko mogao graficki da uradi grubu semu strukture macroa.
[ Jpeca @ 22.10.2019. 10:45 ] @
Nije problem da promeniš format datuma, dok god ga Excel prepozaje kao datum (numerik). Možda te je zbunilo uputstvo "Uneti datum u formatu dd.mm.yyy" kad klikneš u ćeliju. To se podešava u validaciji (Data > Validation, Input message kartica). To je samo komentar za onoga koji unosi i možeš da napišeš šta god ti volja.
[ vojvoda1010 @ 22.10.2019. 14:03 ] @
da li moze i da se doda racun koga nema u listi racuna?

znaci dodati novi racun
[ vojvoda1010 @ 25.10.2019. 23:00 ] @

kako zameniti

For j = 1 To 2

u

1,3,5?
[ vojvoda1010 @ 26.10.2019. 14:19 ] @
Da li bi moglo da se uredi da ima dva kriterijuma pomocu kojih se traze, npr br.racuna i datum, a ako nema jedan od njih ipak da da podatke koji su uneti?
[ vojvoda1010 @ 08.11.2019. 07:24 ] @
Ovo se sa skip blank je potrebno da bise ogranicio pristup odredjenom koji to unosi, te bi zato bilo dobro da se ne vide podaci vec ti postojeci da se kopiraju, odnosno updejtuju i unrsu novi ako ne postoje