Zavrieť

Porady

Problem s vytvorenim makra v exceli...fakt surne

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.
Pravidlá a tipy
  • Každý móže napísať len 1 odpoveď. Neskor mozete svoju odpoveď vylepšiť.
  • Odpoveď má priniesť riešenie na otázku, vyvarujte sa hodnotenia otázky.
  • Odpoveď má byť viac o faktoch ako o názoroch.
Dalšie pravidla a tipy
    Ak potrebujete v otázke niečo upresniť, najskôr sa spýtajte na podrobnosti.
    Koncept slúži na uloženie rozpracovanej odpovede, koncept sa zobrazuje len Vám, až kým ho nezverejníte.
    Ak máte podobnú otázku, založte Novú otázku alebo Súvisiacu otázku.
    ❤ Buďte priateľskí ❤
    Sme súčasťou jednej komunity, ktorá si chce vzájomne pomáhať, rozdieľnosť je vítaná ak neubližuje!
    Usporiadať podľa času

    Andy Kralik je offline (nepripojený) Andy Kralik

    Andy Kralik
    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
    Naposledy upravil Andy Kralik : 04.10.08 at 15:54

    Sekso je offline (nepripojený) Sekso

    Takyy normalny co sa tlaci zivotom bez toho ze by mi tatko kupil auticko dom a taaak =) ...viac Sekso
    Velmi moc ti dakujem, idem to ihned vyskusat, fakt si mi velmi pomohol.

    Sekso je offline (nepripojený) Sekso

    Takyy normalny co sa tlaci zivotom bez toho ze by mi tatko kupil auticko dom a taaak =) ...viac Sekso
    Ahoj, takze sa to nejak zacyklilo, poslem ti vyhodnotenie:
    D6 je 1, D7 je 2

    [hore]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)

    [hore]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 :

    [hore]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


    )
    Naposledy upravil Sekso : 04.10.08 at 20:42 Dôvod: velky text

    Andy Kralik je offline (nepripojený) Andy Kralik

    Andy Kralik
    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)
    Naposledy upravil Andy Kralik : 04.10.08 at 21:02

    Sekso je offline (nepripojený) Sekso

    Takyy normalny co sa tlaci zivotom bez toho ze by mi tatko kupil auticko dom a taaak =) ...viac Sekso
    uz som na to prisiel ..konecne riesenie je:

    PRIEMER MINÚT:

    [hore](INT(AVERAGE(D6;D7)))
    +IF(((AVERAGE(D6;D7))-INT(AVERAGE(D6;D7)))*100+AVERAGEA(E6;E7)>


    100;
    1)

    PRIEMER SEKÚND:

    [hore](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
    Naposledy upravil Sekso : 05.10.08 at 01:33 Dôvod: VYRIESENIE PROBLEMU

    Andy Kralik je offline (nepripojený) Andy Kralik

    Andy Kralik
    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 je offline (nepripojený) Sekso

    Takyy normalny co sa tlaci zivotom bez toho ze by mi tatko kupil auticko dom a taaak =) ...viac Sekso
    Ď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 je offline (nepripojený) marjankaj

    I am a man marjankaj
    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š.

    Problem s vytvorenim makra v exceli...fakt surne

    Porady, ktoré by vás mohli zaujímať

    Prihláste sa a sledujte len tie Porady, ktoré Vás zaujímajú.