[ blue_one @ 26.10.2005. 21:10 ] @
pitanje je vrlo, vrlo jednostavno, a ja nikako da najdem odgovor...
pomagajte, evo problem:

u jednu celiju npr. B2 upisem vrijednost (1+2)*3

kako sada u celiji npr. D4 dobiti rezultat (zbroj) celije B2?
ono sto ja pitam koju formuju da upisem da u celiji D4 dobijem 9 ?!?

pomozite.....

p.s.

da izraz koji se racun MORA biti unutar jedne celije (B2) :)

tnx
[ Shadowed @ 27.10.2005. 06:31 ] @
Hmm, ovo je malo neobicno. Mozda bi bilo bolje da opises sta zelis da postignes.

Ako napises u B2 samo (1+2)*3 to ce biti tekst. Ako napises =(1+2)*3 onda ce se izracunati ali ce rezultat odmah pisati u B2. E sad, ako ti bas hoces da u B2 pise taj tekst "(1+2)*3" a da racunas u nekom drugom polju - moguce je ali je potrebno praviti makro.
[ igorsr @ 27.10.2005. 07:30 ] @
pa prosto nemas sta da komplikujes:
u polju b2 otkucaj:(1+2)*3 a u polju d4: =(1+2)*3
[ Shadowed @ 27.10.2005. 08:57 ] @
Ili da stavi odmah 9? :)

Ako ima mnogo takvih celija bilo bi maltretiranje unositi rucno a u ovom tvom slucaju bi (skoro) moralo.
[ blue_one @ 27.10.2005. 19:31 ] @
tnx, na pokusajima ...

ako slucajno znas kako napraviti makro??? bio bi zahvalan :)

OBJASNJENJE:
naime u cemu je fora?
rijec je o gradevinskoj knjizi, pa se moraju vidjeti brojevi koji su se zbrajali (zato se u polju B2 mora vidjeti cijela formula), a na drugom mjestu D4 rezultat iste formule.

do sada sam radio upravo kako je igorsr napisao, copy polje B2 -> paste u polje D4 i onda stavim = ispred brojki da bi dobio sumu, ali to je sizifov posao jer formula ima podosta.

citao help, googlao ali rjesenje nisam nasao :-(

Ako moze pomoc pri kreiranju makroa, makar osnove kako da to slozim? nisam nikada radio tako nesto iako znam osnove programiranje u VB-u :(

ajde hvala na trudu...

Blue_one

[ manman @ 30.10.2005. 23:28 ] @
Neznam da li ovo pomaze ipak...
1. To switch between viewing the results and viewing the formulas that return the results, press CTRL+` (grave accent), or on the Tools menu,
point to Formula Auditing, and then click Formula Auditing Mode.
E sad, ova radnja menja ceo rezim rada sheet-a u kome se nalazis, znaci
sve celije ce se pritskom na ctrl+` promeniti u formule koje ih cine, ponovni pritisak ctrl+`
celije ponovo prikazuju vrednosti (formula). I tako klikces kad je to potrebno.
Dalje mozes da npr. u sheet1 aktiviras rezim (crtl+` tj. prikaz formula) i ostavis tako, a u sheet2
u istoj celiji, na istim mestima dakle, kopiras formule i one bi bez ctrl+` prikazale vrednosti form.
Ja nisam uspeo da ove dve situacije spojim u sheet3 (jedna kolona formule, druga kolona vrednosti), jer radi se o rezimu rada.
Ako ti uspes javi.

2. Ako oces bolje resenje onda makro. Mozes a potrazis na netu Excel macro (eng. za izracunavaje izraza u text formatu ili sl.) ...
Trebalo bi da nadjes, a ako ipak ne nadjes onda sam prog. a ideja je program mini-calculator koji:
1) na ulazu prima izraz kao string
2) citanje od strane f-je znak po znak do operacionog znaka ili zagrade, e onda to sto si procitao je sigurno broj pa convert iz text u number a to je ugradjena VBA f-ja
pa onda ide operacija, pa provalis koja pa primenis, pa opet isto.
U sustini zagrade komplikuju malo, jer tada pamtis medjurezultate i ponovo ista f-ja opet do zagrade i tako nekako.
mozda nadjes na netu i prog mini-calc pa vidis kako ide.
Da nisam malo iskompliovao (ne znam mozda), cenim da postoji i bolje resenje, za sada ovoliko pa mozda naidje neko sa boljim idejama.

Javi sta si uradio u svakom slucaju. Poz.
[ samke @ 31.10.2005. 06:57 ] @
Koliko sam shvatio treba ti ovo:
U celiju (b2) upisi (1+2)*3 zatim
klik na celiju (d4) i u formula baru upisi
=(1+2)*3 pa enter i rezultat se prikaze kao broj 9


--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
[ saler @ 31.10.2005. 11:30 ] @
Prvo, ako pitas, znaci: nisi glup!

Drugo, iako mislis (odnosno, znas) da je "pesacka" varijanta sizifov posao, mislim da je samke potpuno u pravu. Ako hoces, mozes da procitas
http://homepage.smc.edu/kennedy_john/PARSETREES.PDF
Moze ti pomoci da napises VBA makro, ali...
Razmisli, da li ti je potrebno manje vremena za pisanje makroa, ili je "pesacenje" bolja varijanta. Ne pokusavam da pametujem, samo mislim da je pesacka varijanta laksa.
[ Shadowed @ 01.11.2005. 06:02 ] @
@simke. Moze tako ali je to veliki posao.
@manman. Ne mora toliko da komplikuje. Moze koristiti MS Scripting Control.
[ saler @ 01.11.2005. 07:40 ] @
Shadowed, mislis li na metod "eval" ScriptControl objekta?
[ saler @ 01.11.2005. 07:45 ] @
Citiram Microsoft:
"Before we go any further, I should warn you that using the ScriptControl is not for everyone. The ScriptControl is one of the least-documented controls available in Visual Basic. Most of the documentation for MSScript and VBScript was developed for people building web applications. You can incorporate the ScriptControl into your own programs, but expect to spend some time getting the feel of this control and its quirks. Also, be sure to save your programs (both Visual Basic and VBScript) often."
[ Shadowed @ 01.11.2005. 07:50 ] @
Da, na to mislim.
"Also, be sure to save your programs (both Visual Basic and VBScript) often." Heh, koja perverzija. Ti sad misli zasto su to rekli. Ali zapravo, da, potrebno je izvesno eksperimentisanje i provera gresaka jer ce unosenje formule koju Eval metod ne moze da izrcuna dovesti do greske.
[ saler @ 01.11.2005. 08:05 ] @
Primetio sam.
Da ne dodje do zabune: mislim da je tvoja ideja izvrsna. Jednostavno resenje. Meni nije bilo ni na kraj pameti. (Valjda zato sto skoro nikada ne koristim dodatne kontrole :)) )
[ saler @ 01.11.2005. 08:44 ] @
Da se diskusija ne bi pretvorila u moje divljenje tvojoj ideji...
Mislim da bi kod funkcije ("makroa") trebalo da izgleda ovako:

Function Racunaj(a As Range) As Double

Dim Scr As New ScriptControl
Scr.Language = "VBScript"

izraz = Application.Range(a.Address).Value
racun = Scr.Eval(izraz)

Racunaj = racun

End Function

Trebalo bi da radi. Proverite!!!
[ manman @ 05.11.2005. 01:53 ] @
Pitanje je Bilo:

u jednu celiju npr. B2 upisem vrijednost (1+2)*3

kako sada u celiji npr. D4 dobiti rezultat (zbroj) celije B2?

ono sto ja pitam koju formuju da upisem da u celiji D4 dobijem 9 ?!?

Evo ovo bi moglo da bude resenje:
1) Celije u koje zelis da uneses izraze, (idealno bi bilo da je to kolona) oznacis pa (Recimo Kolona B)
Format > Cells > na kartici Number izaberes Text
2) Zatim uneses sve izraze i to sa znakom = ; B1=(1+2)*3 ;itd. Kao sto vidis u celiji ce ostati izraz tj. =(1+2)*3 ne sracunat posto je format celija Text
3) Opet oznacimo sve celije (iz koraka 1) u koje smo uneli izraze.
Idemo na: Data > Text to Columns (Wizard je startovan Step 1) Kliknes dva puta Next i sada su u Step 3 : Sa desne strane odozgo: Column Data Format na General (default); i ispod toga uneses Destination (oznacimo kolonu A)
Kliknes Finish i dobijas:
A B
8 =(3+1)*2
3 =(2+1)/1
2 =(1+1)-0
6 =1+1*2+1*(2+1)
6 =1.2*5

Sada mozes rezultate iz A dalje kako ti volja a izraz je ostao!

@Shadowed
Mozes da izmenis u svom prvom odgovoru
Citat:
Ako napises =(1+2)*3 onda ce se izracunati ali ce rezultat odmah pisati u B2.

Posto nece tako biti ako je format celije Text.



[Ovu poruku je menjao manman dana 05.11.2005. u 03:03 GMT+1]
[ Shadowed @ 05.11.2005. 06:36 ] @
Nisam se odmah setio i necu sad retroaktivno da se pravim pametan :) a onaj ko nece da cita celu temu, sam je kriv ako ne vidi i bolje resenje.
[ manman @ 06.11.2005. 01:48 ] @
Neznam ko su ti sto ne citaju cele teme i ne bi trebalo time da se bavimo vec trazenjem adekvatnih resenja. U mnozini (resenja) je bolje zar ne? Jer ne razmisljaju svi ljudi na isti nacin. Ali naravno bez preterivanja i ponavljanja, i jos manje revansizma.

p.s. My solution is for everyone.
[ saler @ 07.11.2005. 11:05 ] @
Manman,

tvoje resenje je ok, ako bas neces da koristis VBA. Ali ja stvarno ne vidim razlog za to. Shadowed je imao odlicnu ideju, koja se odnosi na koriscenje Script kontrole.
Stvar je krajnje jednostavna (bez pametovanja):
1. pritisnes Alt-F11 i uskocis u VBA editor,
2. Kliknes na Insert (meni) i izaberes Module,
3. Iskopiras par linija koda, navedenog u jednoj od prethodnih poruka,
4. Zatvoris VBA editor.
5. U radnoj svesci, recimo u celiji A1 upises famozno "(1+2)*3"
6. U celiji B2 upises "=Racunaj(A1)" i stvar je resena.

Da li radi?

Kod je sledeci:

Code:
Function Racunaj(a As Range) As Double

Dim Scr As New ScriptControl
Scr.Language = "VBScript"

izraz = Application.Range(a.Address).Value
racun = Scr.Eval(izraz)

Racunaj = racun

End Function


Razume se da je ovaj kod nekompletan, jer nema rukovanja greskama.


[Ovu poruku je menjao saler dana 07.11.2005. u 12:28 GMT+1]
[Shadowed: dodati [code] tagovi.]

[Ovu poruku je menjao Shadowed dana 08.11.2005. u 08:27 GMT+1]
[ Shadowed @ 08.11.2005. 07:28 ] @
@manman. Ima mnogo takvih a ja moram i time da se bavim kao moderator.

Inace, oba resenja su dobra i mogu se koristiti u zavisnosti od potrebe i specificnih zahteva.