Forumi


Povratak   PC Ekspert Forum > Računala > Software > Web dizajn, programiranje i ostalo
Ime
Lozinka

Odgovori
 
Uređivanje
Staro 06.03.2014., 13:02   #1
Kruno M
Premium
Moj komp
 
Kruno M's Avatar
 
Datum registracije: Nov 2004
Lokacija: VKCI
Postovi: 1,205
Excel, kako prenijeti podatke na drugi sheet

..ali da zadovoljava uvjet sa prvog sheet-a. Hm...

Podaak na drugi sheet prenosim pomoću IF-a:

Code:
=IF(Sheet1!AD5>0;Sheet1!N5)
E sad ja bi trebao automatski prenijeti sve redove sa sheeta1 na sheet2 koji zadovoljavaju taj uvijet. Tako da mi ne pokazuje FALSE vrijednosti nego samo jedno ispod drugoga pokazuje podatke koje ispunjavaju uvjeti.

Nadam se da kužite

__________________
Pošteni trgovci: 1 2 3 4 5 6 7 8 9 10 11 12
Kruno M je offline   Reply With Quote
Staro 06.03.2014., 13:26   #2
sodom
Premium
Moj komp
 
sodom's Avatar
 
Datum registracije: Oct 2007
Lokacija: zagreb
Postovi: 593
Format Painter , zaokružiš- kopiraš, nisam ziher kako radi sa formulama ali probaj.
sodom je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Staro 06.03.2014., 13:40   #3
coconut
Premium
Moj komp
 
coconut's Avatar
 
Datum registracije: Mar 2006
Lokacija: Opatija
Postovi: 33,326
Čini mi da može i CTRL+A (copy all) na prvom sheetu, a onda Paste Special na drugi sheet.
__________________
"Dvije stvari su beskonačne - svemir i ljudska glupost. Za svemir nisam siguran." A. Einstein
coconut je offline   Reply With Quote
Staro 06.03.2014., 14:32   #4
Sa_Stilom
Premium
 
Sa_Stilom's Avatar
 
Datum registracije: May 2006
Lokacija: Croatia
Postovi: 2,706
Baca ti FALSE jer si krivo postavio formulu.

IF funkcija ima 3 karakteristike
1 TKO,ŠTO,GDJE,KADA,ZAŠTO
2 ŠTO DA RADIM AKO JE TOČNO
3 ŠTO DA RADIM AKO JE NETOČNO

Primjer:
Provjeri da li je A=0, ako je prepiši, ako nije ostavi prazno

Formula:
IF(A=0;A;"")

U tvom primjeru:
=IF(Sheet1!AD5>0;Sheet1!N5;"")


Ja često u sličnim primjerima koristim dvostruki IF, gdje se fokusiram da li je polje koje provjeravam "PRAZNO", tada IF izgleda ovako (radi urednosti):
=IF(A1="";"";IF(A1>0;A1;B1))

U prijevodu:
- Provjeri da li je A1 prazan, ako je, ostavi polje prazno, ako nije...
- Provjeri da li je A1 veći od 0, ako je, prepiši A1, ako nije, prepiši B1


ps: Kod korištenja više IFova unutar IFa često uzmem olovku i papir kako se ne bih izgubio u logici i zagradama i crtam npr:

Code:
IF(nešto;
 DA
 IF(nešto;
   DA
   IF(nešto;
     DA
     NE)))

To bi bilo 35,00 kn na korist mog žiro-računa...
__________________
MC

Zadnje izmijenjeno od: Sa_Stilom. 06.03.2014. u 15:24.
Sa_Stilom je offline   Reply With Quote
Staro 07.03.2014., 08:04   #5
Kruno M
Premium
Moj komp
 
Kruno M's Avatar
 
Datum registracije: Nov 2004
Lokacija: VKCI
Postovi: 1,205
@ Sa_Stilom: Radi meni IF fukcija i bez zadnje karakteristike, te on dodaje defaultnu vrijednost koja je u excelu FALSE.

Rezultat dobijem tipa:

Pero
Marko
FALSE
Ivan
Snježana
FALSE
FALSE
FALSE

A ja bi trebao da dobijem:

Pero
Marko
Ivan
Snježana

Samo IF-ovi koji zadovoljavaju uvjet. Neznam da li je to moguće u excelu uopće i napraviti. Da excel izvrti neku petlju i popunjava redove sa rezultatom koji ispunjava uvjet.

Storno 35,00kn - uvjek možeš na čevape doći ako riješim ovo

Gledao sam malo i po prijedlozima od coconut-a i sodom-a ali bezuspješno.
__________________
Pošteni trgovci: 1 2 3 4 5 6 7 8 9 10 11 12
Kruno M je offline   Reply With Quote
Staro 07.03.2014., 09:35   #6
D1viry
Premium
Moj komp
 
D1viry's Avatar
 
Datum registracije: May 2010
Lokacija: Slavonija
Postovi: 2,062
Dodaj još jedan IF. Primjer: =IF((tvoja naredba)=FALSE;"";Tvoja naredba).
__________________
I'd rather have a bottle in front of me than a frontal lobotomy.
Pošten trgovac: 1,2,3,4,5,6
D1viry je offline   Reply With Quote
Staro 07.03.2014., 10:03   #7
Sa_Stilom
Premium
 
Sa_Stilom's Avatar
 
Datum registracije: May 2006
Lokacija: Croatia
Postovi: 2,706
Ajde ti meni opet fino objasni što ti točno želiš, i što imaš...

Ako sam dobro shvatio:
Imaš Sheet1 u kojem u čelijama imaš određene vrijednosti, tipa
Sheet1!A1=Nina
Sheet1!A2=Marica
Sheet1!A3=Ana
Sheet1!A4=Petra
Sheet1!A5="PRAZNO"
Sheet1!A6="PRAZNO"
Sheet1!A7=Iva
Sheet1!A8=Kristina
Sheet1!A9="PRAZNO"
Sheet1!A10=Nika
Sheet1!A11="PRAZNO"
Sheet1!A12=Sunčica

I ti bi sada htio da ti u Sheet2 baca samo polja koja su ispunjena, tako da rezultat bude:
Sheet2!A1=Nina
Sheet2!A2=Marica
Sheet2!A3=Ana
Sheet2!A4=Petra
Sheet2!A5=Iva
Sheet2!A6=Kristina
Sheet2!A7=Nika
Sheet2!A8=Sunčica

Ako je to ono što želiš, to nećeš moći putem funkcije, nego ćeš morati napraviti petlju putem VBA.

Jesam li dobro shvatio što želiš ? Ako ne, molim te pojasni detaljnije kako bih mogao točno pristupiti zadatku.
Svaki problem se često može riješiti na više načina. Jedan je uvijek najispravniji, a drugi su, kako bih rekao "bending the rules".
Za potrebe "škole" ili "zadatka" često se traži trajno - univerzalno riješenje koje podrazumijeva više-manje što manju, odnosno nikakvu interakciju korisnika, odnosno da "program" napravi sve sam. To se u ovom slučaju postiže VBA. Ako pak to nije takva vrsta zadatka, isti se može riješiti s dodatnom interakcijom korisnika, u ovom slučaju tebe na način koji si već dobio, a to je:

Kad u drugom sheetu dobiješ rezultate s FALSE, označiš cijeli taj stupac, stisneš COPY-PASTE Special->Values, filtriraš samo FALSE, obrišeš te redove (ukoliko u ostalim redovima nema informacija, makneš filter i time ti ostane sve ostalo. No, čini mi se da ovdje nije takva vrsta zadatka i riješenja, nego da se ipak traži VBA petlja. Ako pak imaš informacije u ostalim stupcima, ja takve simple probleme riješavam i bez IFa, tako da cijeli stupac u Sheeta1 kopiram u prazni EXCEL, filtriram prazna polja, obrišem ih, i ono što ostane kopiram u Sheet2. No, rekoh, mislim da to ovdje nije ono što se traži.
__________________
MC

Zadnje izmijenjeno od: Sa_Stilom. 07.03.2014. u 10:12.
Sa_Stilom je offline   Reply With Quote
Staro 07.03.2014., 10:25   #8
Kruno M
Premium
Moj komp
 
Kruno M's Avatar
 
Datum registracije: Nov 2004
Lokacija: VKCI
Postovi: 1,205
Citiraj:
Autor Sa_Stilom Pregled postova
Ajde ti meni opet fino objasni što ti točno želiš, i što imaš...

Ako sam dobro shvatio:
Imaš Sheet1 u kojem u čelijama imaš određene vrijednosti, tipa
Sheet1!A1=Nina
Sheet1!A2=Marica
Sheet1!A3=Ana
Sheet1!A4=Petra
Sheet1!A5="PRAZNO"
Sheet1!A6="PRAZNO"
Sheet1!A7=Iva
Sheet1!A8=Kristina
Sheet1!A9="PRAZNO"
Sheet1!A10=Nika
Sheet1!A11="PRAZNO"
Sheet1!A12=Sunčica

I ti bi sada htio da ti u Sheet2 baca samo polja koja su ispunjena, tako da rezultat bude:
Sheet2!A1=Nina
Sheet2!A2=Marica
Sheet2!A3=Ana
Sheet2!A4=Petra
Sheet2!A5=Iva
Sheet2!A6=Kristina
Sheet2!A7=Nika
Sheet2!A8=Sunčica

Ako je to ono što želiš, to nećeš moći putem funkcije, nego ćeš morati napraviti petlju putem VBA.

Jesam li dobro shvatio što želiš ? Ako ne, molim te pojasni detaljnije kako bih mogao točno pristupiti zadatku.
Svaki problem se često može riješiti na više načina. Jedan je uvijek najispravniji, a drugi su, kako bih rekao "bending the rules".
Za potrebe "škole" ili "zadatka" često se traži trajno - univerzalno riješenje koje podrazumijeva više-manje što manju, odnosno nikakvu interakciju korisnika, odnosno da "program" napravi sve sam. To se u ovom slučaju postiže VBA. Ako pak to nije takva vrsta zadatka, isti se može riješiti s dodatnom interakcijom korisnika, u ovom slučaju tebe na način koji si već dobio, a to je:

Kad u drugom sheetu dobiješ rezultate s FALSE, označiš cijeli taj stupac, stisneš COPY-PASTE Special->Values, filtriraš samo FALSE, obrišeš te redove (ukoliko u ostalim redovima nema informacija, makneš filter i time ti ostane sve ostalo. No, čini mi se da ovdje nije takva vrsta zadatka i riješenja, nego da se ipak traži VBA petlja. Ako pak imaš informacije u ostalim stupcima, ja takve simple probleme riješavam i bez IFa, tako da cijeli stupac u Sheeta1 kopiram u prazni EXCEL, filtriram prazna polja, obrišem ih, i ono što ostane kopiram u Sheet2. No, rekoh, mislim da to ovdje nije ono što se traži.

U pravu si što se tiće zadatka. I zadatak je poslovne naravi, davno nema veze sa školom .

Ja sam za sada to riješio ručno. Prebacim sve na Sheet2 i onda sortiram po stupcima descendig i na početku dobijem rezultate koji su mi potrebni, FALSE ostane na kraju.

A ja sam htio to napraviti da ide automatski.

Ja popunjavam samo Sheet1, automatski prebacujem na Sheet2 i onda sa Sheeta2 automatski popunjavam obrazac na Sheet3. E sad meni je poluautomatski samo Sheet2 gdje moram sortirati da bi dobio na vrhu sve osim FALSE.

Da li se to može pomoću Macroa riješiti ili možda imaš primjer neki i sa VBA. Te da li si radio tako šta?
__________________
Pošteni trgovci: 1 2 3 4 5 6 7 8 9 10 11 12
Kruno M je offline   Reply With Quote
Staro 07.03.2014., 10:39   #9
Sa_Stilom
Premium
 
Sa_Stilom's Avatar
 
Datum registracije: May 2006
Lokacija: Croatia
Postovi: 2,706
Nisam maher u VBA, puno googlam googlam dok ne sklepam "kod" koji radi ono što mi treba.

Znam otprilike kako postaviti zadatak, no ne znam ga napisati.

Code:
Sub Zadatak ()
Dim X as ?, Y as ?, Z as ?

X = Sheet1A1
Z = Sheet2A1

i = i + ActiveCell.Offset(1, 0) = 1

If X>0 Then nešto Sheet2A1

nešto nešto idi na početak

...i sad još treba postaviti neki uvijek kada se petlja završava
E sad, koliko sam blizu ili daleko od točnog riješenja, ne bih znao... Više sam matematičar, nego programer i to me koči da napredujem ako programer a i ne interesira me previše programiranje osim kada mi zatreba, a onda završim satima/danima googlajući.



Generalno, putem VBA sve se može riješiti, samo treba to znati postaviti i napisati.


Pokušati ću ovo riješiti jer dobro mi dođe da malo i taj dio nadogradim.
__________________
MC
Sa_Stilom je offline   Reply With Quote
Staro 07.03.2014., 10:41   #10
Kruno M
Premium
Moj komp
 
Kruno M's Avatar
 
Datum registracije: Nov 2004
Lokacija: VKCI
Postovi: 1,205
Citiraj:
Autor Sa_Stilom Pregled postova
Nisam maher u VBA, puno googlam googlam dok ne sklepam "kod" koji radi ono što mi treba.

Znam otprilike kako postaviti zadatak, no ne znam ga napisati.

Code:
Sub Zadatak ()
Dim X as ?, Y as ?, Z as ?

X = Sheet1A1
Z = Sheet2A1

i = i + ActiveCell.Offset(1, 0) = 1

If X>0 Then nešto Sheet2A1

nešto nešto idi na početak

...i sad još treba postaviti neki uvijek kada se petlja završava


Pokušati ću ovo riješiti jer dobro mi dođe da malo i taj dio nadogradim.
Ja ću ga sad sa VBA auto sortirati (valjda), ali bi mi takodjer bilo zanimljivije eliminirati podatke koji su mi nepotrebni.

Isto tako će mi ovo uskoro više trebati, ovo je prvi puta.
__________________
Pošteni trgovci: 1 2 3 4 5 6 7 8 9 10 11 12
Kruno M je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Staro 07.03.2014., 10:47   #11
D1viry
Premium
Moj komp
 
D1viry's Avatar
 
Datum registracije: May 2010
Lokacija: Slavonija
Postovi: 2,062
Ja sam potpuno drukčije skužio zadatak i promašio rješenje, naravno.
__________________
I'd rather have a bottle in front of me than a frontal lobotomy.
Pošten trgovac: 1,2,3,4,5,6
D1viry je offline   Reply With Quote
Staro 07.03.2014., 11:19   #12
Sa_Stilom
Premium
 
Sa_Stilom's Avatar
 
Datum registracije: May 2006
Lokacija: Croatia
Postovi: 2,706
Citiraj:
Autor Kruno M Pregled postova
Ja ću ga sad sa VBA auto sortirati (valjda), ali bi mi takodjer bilo zanimljivije eliminirati podatke koji su mi nepotrebni.

Isto tako će mi ovo uskoro više trebati, ovo je prvi puta.
Ja sam često takve zadatke koji mi se recimo puno ponavljaju oko sortiranja i gdje postoji određena forma-standard napravio sa čistim MACRO.

Record -> Zatim napravim što trebam -> STOP, malo još uredim taj kod da se brže odvija, isključim da se ne prikazuje korisniku izvođenje macro, odnosno da se vrši u backgroundu, ubacim neke gumbiće, MesBox, tipa pričekajte, itd itd... i dotlem Excel odradi što treba. Nije super profesionalno riješenje programera, ali često tako riješim ono što mi treba. Ako stvar funkcionira i dobijem ono što trebam, zadovoljan korisnik, zadovoljan ja, sve 5.

Ovdje se spominje sličan zadatak, no trebati ćeš ga doraditi. Više manje ima svega online, rijetko točno ono što čovjek treba, ali komad koda ovdje, ondje i sklepa se. Još ako si uzmeš vremena i shvatiš i naučiš postavljanje varijabli, petlji, if, i, do, loop, itd... i ostale manipulacijske sintakse i formule, onda si car. Meni zatreba tako nešto 1-3 godišnje i onda mi se neda štrebati satima to naučiti, nego kombiniram sve i svašta da dobijem što trebam.

http://stackoverflow.com/questions/1...eet-to-another
__________________
MC
Sa_Stilom je offline   Reply With Quote
Staro 07.03.2014., 11:59   #13
Kruno M
Premium
Moj komp
 
Kruno M's Avatar
 
Datum registracije: Nov 2004
Lokacija: VKCI
Postovi: 1,205
Riješeno za sada sa Macro naredbom. Snimio Sortiranje kako sam htio i onda podesio da se pri aktivaciji tog sheeta automatski izvrši taj macro - ručno ali stručno

Desni klik na sheet pa View code i onda pase:

Code:
Private Sub Worksheet_Activate() 
    Call sort (ime macroa)     
End Sub
Nek se nadje ak nekom zatreba.


@Sa_Stilom: kako si rekao, sve radi, svi zadovoljni.

Ako naletiš na elegantnije riješenje molim te javi, i ja ću svakako.
__________________
Pošteni trgovci: 1 2 3 4 5 6 7 8 9 10 11 12
Kruno M je offline   Reply With Quote
Staro 07.03.2014., 12:26   #14
Sa_Stilom
Premium
 
Sa_Stilom's Avatar
 
Datum registracije: May 2006
Lokacija: Croatia
Postovi: 2,706
Daj baci mi taj macro da ga samo pogledam...

Caka kako sakriti izvršenej Macroa:
Code:
Application.ScreenUpdating = False
PS: Ovaj link na Youtube jako detaljno radi objašnjava VBA:
http://www.youtube.com/user/WiseOwlT...?feature=watch
__________________
MC

Zadnje izmijenjeno od: Sa_Stilom. 07.03.2014. u 12:33.
Sa_Stilom je offline   Reply With Quote
Staro 07.03.2014., 13:08   #15
Kruno M
Premium
Moj komp
 
Kruno M's Avatar
 
Datum registracije: Nov 2004
Lokacija: VKCI
Postovi: 1,205
Citiraj:
Autor Sa_Stilom Pregled postova
Daj baci mi taj macro da ga samo pogledam...
Eo ga:

Code:
Sub Sort()
'
' Sort Macro
' Macro recorded 07.03.2014 by K
'
' Keyboard Shortcut: Ctrl+k
'
    Range("A2:D218").Select
    Selection.Sort Key1:=Range("A2"), Order1:=xlDescending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End Sub
__________________
Pošteni trgovci: 1 2 3 4 5 6 7 8 9 10 11 12

Zadnje izmijenjeno od: Kruno M. 07.03.2014. u 13:24.
Kruno M je offline   Reply With Quote
Staro 07.03.2014., 14:25   #16
Sa_Stilom
Premium
 
Sa_Stilom's Avatar
 
Datum registracije: May 2006
Lokacija: Croatia
Postovi: 2,706
Citiraj:
Autor Kruno M Pregled postova
Eo ga:

Code:
Sub Sort()
'
' Sort Macro
' Macro recorded 07.03.2014 by K
'
' Keyboard Shortcut: Ctrl+k
'
    Range("A2:D218").Select
    Selection.Sort Key1:=Range("A2"), Order1:=xlDescending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End Sub
OK, evo ja sam riješio (ovo je riješeno pomoću gumba, a ti sebi implementiraj kako god želiš) - Ovo je pojednostavljena verzija unutar jednog sheeta, a ti sad sebi gradi tako da ga samo pozicioniraš da iz drugog sheeta provjerava u prvi, te naravno da zadovoljava uvjet koji tebi treba:

Code:
Private Sub CommandButton1_Click()

Dim i As Integer
i = 1

Cells(1, 2).Select

Do While Cells(i, 1) <> ""
If Cells(i, 1) > 0 Then
    ActiveCell = Cells(i, 1)
    i = i + 1
    ActiveCell.Offset(1, 0).Select
Else
   i = i + 1
End If
Loop
End Sub
VBA radi sljedeće:
Provjerava u prvoj koloni od prve vrijednosti (znači kolona A) da li je vrijednost veća od 0

Kolona sadrži:
1
2
-1
-2
3
4
-4
-3
-4
5
6
7
-5
-6
8
9
-7
-8
-9

Ako je veća od nula, prepiši pa se pomakni dalje, ako nije, samo povećaj i

Rezultat je da dobijem (u drugoj koloni (B) samo pozitivne brojeve jedan ispod drugog):
1
2
3
4
5
6
7
8
9
__________________
MC
Sa_Stilom je offline   Reply With Quote
Staro 07.03.2014., 19:43   #17
Kruno M
Premium
Moj komp
 
Kruno M's Avatar
 
Datum registracije: Nov 2004
Lokacija: VKCI
Postovi: 1,205
Odlično. Hvala, isprobat ću
__________________
Pošteni trgovci: 1 2 3 4 5 6 7 8 9 10 11 12
Kruno M je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Odgovori



Pravila postanja
Vi ne možete otvarati nove teme
Vi ne možete pisati odgovore
Vi ne možete uploadati priloge
Vi ne možete uređivati svoje poruke

BB code je Uključeno
Smajlići su Uključeno
[IMG] kod je Uključeno
HTML je Isključeno

Idi na