Excel guruja?

  • Keskustelun aloittaja Keskustelun aloittaja delete
  • Aloitettu Aloitettu
Ihmeen hankala juttu tämäkin, mutta varmaan osaaville helppo. Haluaisin pitää excelissä treenipäiväkirjaa niin, että kirjoitan tekemäni treenin yhteen soluun ja viereiseen ilmestyisi sitten automaattisesti kokonaisvolyymi. Eli yhdessä solussa näkyisi mitä on tehty ja viereisessä operaation lopputulos, esim. 2*5*100+2*8*80 ja vieressä 2280.

Kuinka onnistuu?
 
10% ALENNUS KOODILLA PAKKOTOISTO
Onnistuu jossain Excelin lisäpaketissa olevalla funktiolla EVAL. Onnistunee myös seuraavalla lisäämällä seuraava VBA-funktio kirjastona Excel-fileeseen:

Function Eval(Ref As String)
Application.Volatile
Eval = Evaluate(Ref)
End Function

Mulla on Macciversio Excelistä, joten kumpaakaan ei näköjään voi kokeilla, VBA editori jumittaa koko paskan.
 
Ihmeen hankala juttu tämäkin, mutta varmaan osaaville helppo. Haluaisin pitää excelissä treenipäiväkirjaa niin, että kirjoitan tekemäni treenin yhteen soluun ja viereiseen ilmestyisi sitten automaattisesti kokonaisvolyymi. Eli yhdessä solussa näkyisi mitä on tehty ja viereisessä operaation lopputulos, esim. 2*5*100+2*8*80 ja vieressä 2280.

Kuinka onnistuu?

Jos sulla on excel 2013, niin toimii ainakin että avaat VBA:n painamalla Alt+F11 ja sieltä vasemmalta ylhäältä "insert modulesta" klikkaat module ja siihen pasteet seuraavan:

Function ev(r As Range) As Variant
ev = Evaluate(r.Value)
End Function

Sit tallennat ja sulla on ev-niminen funktio, eli toimii kuten normisti =ev(solu). Se pitäisi vielä tallentaa .xlsm tiedostoksi, että pystyy jatkossakin käyttämään sitä. Eli makrot käytössä.
Sattumalta olin just itse tismalleen samasta syystä ettiny ratkaisun tähän. :D
 
Jos sulla on excel 2013, niin toimii ainakin että avaat VBA:n painamalla Alt+F11 ja sieltä vasemmalta ylhäältä "insert modulesta" klikkaat module ja siihen pasteet seuraavan:

Function ev(r As Range) As Variant
ev = Evaluate(r.Value)
End Function

Sit tallennat ja sulla on ev-niminen funktio, eli toimii kuten normisti =ev(solu). Se pitäisi vielä tallentaa .xlsm tiedostoksi, että pystyy jatkossakin käyttämään sitä. Eli makrot käytössä.
Sattumalta olin just itse tismalleen samasta syystä ettiny ratkaisun tähän. :D

Mikäs tässä on kun ei hyväksy pilkkua desimaalierottimeksi? Kun laittaa pisteen niin toimii, mutta näyttää kuitenkin tuloksen käyttäen pilkkua.
 
Arvaus: piste on oletusarvo (koska USAssa piste on desimaalierotin, ja pilkku 1000 erotin) ja VBA käyttää tätä, kun taas Excel itse käyttää erottimena sitä, joka on määritelty Windowsin maa-asetuksissa. Saattaisi korjaantua joko siten, että laitat tuohon pieneen makrofunktioon tämän:
Koodi:
Application.UseSystemSeparators = True
tai tämän
Koodi:
Application.DecimalSeparator = ","
Edelleenkään en voi testata itse koska Mac, joten aika teoriapohjalta neuvon.
 
Enpä fiksummasta tavasta tiedä, tuo ehdottamasi on aika näppärä ja tehdään yhden solun sisään näin:

=ROUND(solu1*solu2/2,5;0)*2,5

Helkatti ois pitänyt tulla ensimmäisenä etsiin täältä vastausta... Googlettelin ja google antoi huonoja vastauksia... No täältähän se vastaus kysymykseeni löytyi, jonka powerhouse oli kysässy jokusen vuosi sitten!
jes nyt saa mielenrauhan ja pääsee kirjaan treeniohjelman hifistellen loppuun!

Kiitos pakkis! :)
 
Kaipaisin apua hieman ylityölaskuriin.

Tarkoitus olisi tehdä laskuri joka laskee ylityöt summana yhteen soluun viikkokohtaisesti

elikkä lyhykäisyydessään jos Maanantaina teen vaikka 1h ylitöitä niin se laskee prosentteina sen ylityö osan 50%

jos teen 2h niin 2h tulee 50%
jos teen 3h niin 2 eka tuntia tulee 50% ja kolmas 100%

Lyhykäisyydessäänhän tuo varmaan kannattaa laskea jotenkin 1=1,5h 2=3h, 3=5h 4=7h jne...

Tarkotus olisi tehdä koko vuoden ajalta kyseinen seuranta joten haluaisin pitää sarakemäärät pienenä. Muut tunnit ja lisät minua ei varsinaisesti kiinnosta vaan lähinnä prosenttiylityökorvaukset

Kiitos jo etukäteen

edit.

kaavan idea lyhykäisyydessään

eec5ed82f0762476a49c56b73abc3157.png
 
Pitäisi kyllä vähän tarkemmat speksit saada tuohon kaavaan, sillä ainakaa itselläni ei yleissivistys riitä näiden laskemiseen ilman. Olen ylitöistä saanut korvauksia muistaakseni kerran 25-vuotisen työuran aikana. Jos osaat laskukaavan selittää sanallisesti, niin helppohan se on siitä kääntää sisäkkäisiksi if -lausekkeiksi.
 
Niin eli haluat näkyviin vaan kuinka monta ylimääräistä tuntia tulee ylitöiden takia? Ja kertoimet näille menee niinkuin mainitsit tuossa?
 
Kaipaisin apua hieman ylityölaskuriin.

Tarkoitus olisi tehdä laskuri joka laskee ylityöt summana yhteen soluun viikkokohtaisesti

elikkä lyhykäisyydessään jos Maanantaina teen vaikka 1h ylitöitä niin se laskee prosentteina sen ylityö osan 50%

jos teen 2h niin 2h tulee 50%
jos teen 3h niin 2 eka tuntia tulee 50% ja kolmas 100%

Lyhykäisyydessäänhän tuo varmaan kannattaa laskea jotenkin 1=1,5h 2=3h, 3=5h 4=7h jne...

Tarkotus olisi tehdä koko vuoden ajalta kyseinen seuranta joten haluaisin pitää sarakemäärät pienenä. Muut tunnit ja lisät minua ei varsinaisesti kiinnosta vaan lähinnä prosenttiylityökorvaukset

Kiitos jo etukäteen

edit.

kaavan idea lyhykäisyydessään

eec5ed82f0762476a49c56b73abc3157.png

Tekisin ehkä jotenkin näin:

Ylityöt merkitty soluihin seuraavasti:

- maanantai: A2
- tiistai: B2
- keskiviikko: C2
- torstai: D2
- perjantai: E2

Rivin perään yhtälö:

=IF(A2>2;3+(A2-2)*2;1.5*A2)+IF(B2>2;3+(B2-2)*2;1.5*B2)+IF(C2>2;3+(C2-2)*2;1.5*C2)+IF(D2>2;3+(D2-2)*2;1.5*D2)+IF(E2>2;3+(E2-2)*2;1.5*E2)

Tuo siis kertoo ylityötunnit auki, sitä ilmeisesti hait. Tämä pätee vaan arkipäiville. Miten muuten viikonloppuna tehdyt ylityöt lasketaan?

Niin ja jos sulla sattuu olemaan desimaalierottimena pilkku, niin se pitää luonnollisesti muuttaa tuohon yhtälöön.
 
Tuossa on ilmeisesti lisätyöt jätetty huomiotta tai sitten sovellettu TES/sopimus ei niitä tunne.

Vrk-ylityö(ma-pe) ja vko-ylityö(la-su) poikkeavat vielä toisistaan. Tarkempi laskenta vaatisi tiedon siitä lasketaanko työaikalain vai jonkin TES/paikallisen sopimuksen mukaan.
 
Pitäisi kyllä vähän tarkemmat speksit saada tuohon kaavaan, sillä ainakaa itselläni ei yleissivistys riitä näiden laskemiseen ilman. Olen ylitöistä saanut korvauksia muistaakseni kerran 25-vuotisen työuran aikana. Jos osaat laskukaavan selittää sanallisesti, niin helppohan se on siitä kääntää sisäkkäisiksi if -lausekkeiksi.

No kyllähän se kuulostaa helpolta mutta sitä se ei ainakaan itselle ole :D

Niin eli haluat näkyviin vaan kuinka monta ylimääräistä tuntia tulee ylitöiden takia? Ja kertoimet näille menee niinkuin mainitsit tuossa?

Kertoimet kuvastavat ylityöprosentteja

Tekisin ehkä jotenkin näin:

Ylityöt merkitty soluihin seuraavasti:

- maanantai: A2
- tiistai: B2
- keskiviikko: C2
- torstai: D2
- perjantai: E2

Rivin perään yhtälö:

=IF(A2>2;3+(A2-2)*2;1.5*A2)+IF(B2>2;3+(B2-2)*2;1.5*B2)+IF(C2>2;3+(C2-2)*2;1.5*C2)+IF(D2>2;3+(D2-2)*2;1.5*D2)+IF(E2>2;3+(E2-2)*2;1.5*E2)

Tuo siis kertoo ylityötunnit auki, sitä ilmeisesti hait. Tämä pätee vaan arkipäiville. Miten muuten viikonloppuna tehdyt ylityöt lasketaan?

Niin ja jos sulla sattuu olemaan desimaalierottimena pilkku, niin se pitää luonnollisesti muuttaa tuohon yhtälöön.
En saanut toimimaan summa kohtaan tuota lauseketta vaan kaavalle tulee virheilmoitus. Muuntelin solut omaan kaavioon sopivaksi mutta virhettä puskee: Tuossa vielä nuo omat solujen sijainnit taulukossa:

c87fff4515b521dc3725cedd9ef561b7.png


Viikonlopputöitä tulee vähän ja ne voidaan puolestani laskea samalla kaavalla kuin arkipäivät

Tuossa on ilmeisesti lisätyöt jätetty huomiotta tai sitten sovellettu TES/sopimus ei niitä tunne.

Vrk-ylityö(ma-pe) ja vko-ylityö(la-su) poikkeavat vielä toisistaan. Tarkempi laskenta vaatisi tiedon siitä lasketaanko työaikalain vai jonkin TES/paikallisen sopimuksen mukaan.

Kuten eka postauksessa sanoin niin en tarvitse lisien lisäystä koska silloin täytyisi myös aloitusajankohdat merkata.
 
En saanut toimimaan summa kohtaan tuota lauseketta vaan kaavalle tulee virheilmoitus. Muuntelin solut omaan kaavioon sopivaksi mutta virhettä puskee: Tuossa vielä nuo omat solujen sijainnit taulukossa:

Onko sulla suomenkielinen excel? Jos on, niin silloin tuo kaava olisi:

=JOS(A2>2;3+(A2-2)*2;1,5*A2)+JOS(B2>2;3+(B2-2)*2;1,5*B2)+JOS(C2>2;3+(C2-2)*2;1,5*C2)+JOS(D2>2;3+(D2-2)*2;1,5*D2)+JOS(E2>2;3+(E2-2)*2;1,5*E2)

Mun mielestä toi antaa sen mitä halusit. Itse en edes osaa ylitöitä laskea tarkasti. Palkkalaskelmassakin on niin monta eri riviä aina, että ei sitä osaa edes tarkistaa :D
 
Onko sulla suomenkielinen excel? Jos on, niin silloin tuo kaava olisi:

=JOS(A2>2;3+(A2-2)*2;1,5*A2)+JOS(B2>2;3+(B2-2)*2;1,5*B2)+JOS(C2>2;3+(C2-2)*2;1,5*C2)+JOS(D2>2;3+(D2-2)*2;1,5*D2)+JOS(E2>2;3+(E2-2)*2;1,5*E2)

Mun mielestä toi antaa sen mitä halusit. Itse en edes osaa ylitöitä laskea tarkasti. Palkkalaskelmassakin on niin monta eri riviä aina, että ei sitä osaa edes tarkistaa :D
No nyt toimii :D Ilmeisesti kielimuuri oli Exelillä. Kiitos tästä. Eikös tuohon olisi aika helppo myös lisätä viikonloppu samalla idealla. Muistaakseni lauantaina on kokopäivä 50% tunteja ja sunnuntai 300%

Kiitos
 
No nyt toimii :D Ilmeisesti kielimuuri oli Exelillä. Kiitos tästä. Eikös tuohon olisi aika helppo myös lisätä viikonloppu samalla idealla. Muistaakseni lauantaina on kokopäivä 50% tunteja ja sunnuntai 300%

Kiitos

Eipä mitään. Itelläkin töissä englanninkielinen versio ja kotona suomenkielinen, niin vähän hankalaa, jos kotona koittaa jotain joskus laskea. Viikonlopun voi lisätä tuohon perään ihan helposti. Jos kaikki tunnin on samanarvoisia, niin ei tarvitse edes ehtolausetta, kun kerrotaan vaan kertoimella tunnit.
 

Latest posts

Suositut

Back
Ylös Bottom