Sekso
03.10.08,23:01
Ahojte, prosim Vas potrebujem asap poradit..
Som si zmyslel na geodeziu vytvorit makrovy vypocet meranych smerov a uhlov....problem je takyto:

Potrebujem makro, ktore v konkretnej bunke spravi priemer dvoch inych ciselnych hodnot z dvoch inych konkretnych buniek 9na toto som prisiel9, a k tomu podmienku ze: ak priemer obsahuje necele cislo, potrebujem vynasobit hodnotu za desatinnou ciarkou desiatimi a pripocitat k hodnote v inej bunke.

Je tu daky divoch ktory mi s tym pomoze?

Aby som to ozrejmil viacej" ide o vypocet priemeru gradov, minut a sekund, ide o priemerovu hodnotu minut, ktorej hodnota za desatinnou ciarkou sa pripisuje k priemerovej hodnote sekundovej hodnoty....

Velmi Vam dakujem za pomoc.
habka
04.10.08,12:25
clovece ty si nejaky komplikovany:---
Andy Kralik
04.10.08,13:01
Ak rozumiem mas bunky A1 a A2
do bunky C1 vypocitas priemer =AVERAGEA(A1:A2)
a ak C1 nie je cele cislo pripocitat hodnotu za desatinnou ciarkou vynasobenou 10 k hodnote D1
KDYŽ(C1-CELÁ.ČÁST(C1)>0;(C1-CELÁ.ČÁST(C1))*10+D1;0)

Ak A1 a A2 bude 1 a 2 (predpokladam ze ide o kladne cisla)
C1 bude 1,5
C1-CELÁ.ČÁST(C1) = 0,5 cize bude splnena podmienka, v tom pripade sa vynasobi 10 = 5 a pripocita k D1 = vysledok vzorca

Ak A1 a A2 bude 1 a 5
C1 bude 3
C1-CELÁ.ČÁST(C1) = 0 cize nebude splnena podmienka, v tom pripade vysledok vzorca bude 0

ak mozu byt A1 a A2 aj zaporne cisla v tom pripade zvaz co vlastne chces dosiahnut, CELÁ.ČÁST(INT) zaokrúhli číslo na celé číslo dolu, v prípade záporných hodnôt by bolo lepšie použiť namiesto neho USEKNOUT(TRUNC) táto funkcia skráti číslo na celé číslo ale zostane záporná hodnota

Čiže ak A1 a A2 bude 2 a -5
C1 bude -1,5
C1-USEKNOUT(C1) = -0,5 do podmnienky preto treba dat ze cislo je ine ako 0 (<>0) aby bola splnena podmienka
vysledok (C1-USEKNOUT(C1))*10 bude -5, ak ale chces k D1 pripocitat kladnu hodnotu musis ziskat absolutnu hodnotu vzorca (funkcia ABS) ciye vzorec by potom vyzeral
KDYŽ(C1-USEKNOUT(C1)<>0;ABS((C1-USEKNOUT(C1)))*10+D1;0)

ak nemas lokalizovany excel - CELÁ.ČÁST = INT, KDYŽ = IF, USEKNOUT = TRUNC, ABS = ABS, AVERAGEA = AVERAGEA
makro na toto nie je treba. ak ho silou mocou potrebujes, naprogramujes ho rovnakym sposobom
Sekso
04.10.08,17:39
Velmi moc ti dakujem, idem to ihned vyskusat, fakt si mi velmi pomohol.
Sekso
04.10.08,18:31
Ahoj, takze sa to nejak zacyklilo, poslem ti vyhodnotenie:
D6 je 1, D7 je 2
=AVERAGEA(D6;D7)*IF(G6-INT(G6)>0;(G6-INT(G6))*10+H6;0)
=1,5*IF(G6-INT(G6)>0;(G6-INT(G6))*10+H6;0)
=1,5*IF(G6-INT(G6)>0;(G6-INT(G6))*10+H6;0)
=1,5*IF(0-INT(0)>0;(G6-INT(G6))*10+H6;0)
..malo by to hodnotit ako :
=1,5*IF(1,5-1>0;(G6-INT(G6))*10+H6;0)
...vies mi poradit co je zle v tomto?
Vazne si vazim tuto pomoc =)
Andy Kralik
04.10.08,18:55
Aky udaj mas v G6?
ak cely ten vzorec,je to zle lebo sa nemozes vo vzorci odvolavat na hodnotu v tej istej bunke
.........
napis presne z ktorej hodnoty potrebujes ratat tie desatinne miesta (z toho priemeru D6,D7, pripadne z inej hodnoty?)
..........
tvoj vzorec teraz znamena
AVERAGEA(D6;D7)*IF(G6-INT(G6)>0;(G6-INT(G6))*10+H6;0)

vynasob priemernu hodnotu D6 a D7 /AVERAGEA(D6;D7)/
tak, ze v pripade ak v G6 je necele cislo - za desatinnou ciarkou je nejaky nenulovy zvysok /G6-INT(G6)>0/
tak nasobis hodnotou ktora je dana cislom za desatinnou čiarkou nasobenym 10 priratanym k H6 /(G6-INT(G6))*10+H6/
inak nasobis 0
IF(podmienka;hodnota ak plati podmienka;hodnota ak neplati podmienka)
Sekso
04.10.08,19:31
uz som na to prisiel ..konecne riesenie je:

PRIEMER MINÚT:
=(INT(AVERAGE(D6;D7)))
+IF(((AVERAGE(D6;D7))-INT(AVERAGE(D6;D7)))*100+AVERAGEA(E6;E7)>=100;
1)

PRIEMER SEKÚND:
=(AVERAGEA(E6;E7)
+IF(AVERAGE(D6;D7)-(INT(AVERAGE(D6;D7)))>0;
(AVERAGE(D6;D7)-INT(AVERAGE(D6;D7)))*100;0))
+IF(((AVERAGE(D6;D7))-INT(AVERAGE(D6;D7)))*100+AVERAGEA(E6;E7)>100;
((AVERAGE(D6;D7))-INT(AVERAGE(D6;D7)))*100+AVERAGEA(E6;E7)-100-(AVERAGE(D6;D7)-INT(AVERAGE(D6;D7)))*100-AVERAGEA(E6;E7))
+IF(((AVERAGE(D6;D7))-INT(AVERAGE(D6;D7)))*100+AVERAGEA(E6;E7)=100;
-100)

Velmi dakujem za help, inak by som si to nevedel logicky odvodzovat
Andy Kralik
05.10.08,07:53
:)Rado sa stalo

Snad len pre doplnenie, ak sa ti uz zapis zda prilis zlozity v jednom riadku je lepsie si ho vytvorit ako novu funkciu - koli prehladnosti a pripadnym upravam v buducnosti.

Nastroje - makro - editor jazyka VBA (alebo aj Alt + F11)
potom vytvoris novy modul Insert – Module
a vlozis novu funkciu Insert – Procedure-Function
takto vytvorena funkcia sa bude zobrazovat v zozname funkcii listu

Len ju treba napisat v jazyku VBA (ked sa s tym trochu pohras nie je to az taky problem). Snad len rada - ak by si chcel volať funciu excelu, neda sa to priamo, len cez zapis Application.WorksheetFunction
Napr. AVERAGE sa vo VBA zada ako Application.WorksheetFunction.Average

Nechce sa mi ratat cely tvoj zapis, ale napriklad
zapis v bunke: AVERAGEA(D6;D7)*IF(G6-INT(G6)>0;(G6-INT(G6))*10+H6;0)
by sa vo VBA napisal ako:

Function PORADA(V1, V2, v3) As Variant
Dim i As Variant
i = Application.WorksheetFunction.Average(V1)
If (V2 - Int(V2) > 0) Then PORADA = i * ((V2 - Int(V2)) * 10 + v3) Else PORADA = 0
End Function

Vysledok je Funkcia o 3 premennych, a v bunke by si uz len zadal funkciu
PORADA(D6: D7,G6,H6)

je to len priklad, nechcelo sa mi pisat cely tvoj vzorec, ale napisal by si ho identicky. Nech sa dari:)
Sekso
05.10.08,14:58
Ďakujem ti veľmi moc, začalo ma to baviť keď tomu rozumiem, možno časom zo software testera budem programator hehe. Pokiaľ by si potreboval nejaky help ohľadom adobe produktov, tj photoshop , illustrator a pod, rad pomôžem =).. želám pekný deň =)
marjankaj
06.10.08,13:09
Neviem, čo pesne je v bunkách D6,D7,E6,E7.

Ak ti ide o priemer dvoch uhlov v grádoch (napr. 20 grádov 15 minút 70 sekúnd) tak do bunky D6 vložíš hodnotu 20,1570. Analogicky (napr. 15 grádov 45 minút 48 sekúnd ) vložíš do bunky d7.
Do bunky trebárs G6 vložíš funkciu Average(D6;D7) a naformátuješ na 4 desatinné miesta.

Ak potrebuješ zvlášť Grády minúty a sekundy tak si ich už ľahko vytvoríš z bunky G6.
Dúfam, že som to správne pochopil, čo chceš.