Neuvoja toimistosovellusten käytöstä
Tietääkö kukaan, onko netissä olemassa keskustelu tms palstaa, johon voisi heittää tavallisiin toimistosovelluksiin (esimerkiksi Excel) liittyviä kysymyksiä.
Olen selannut kaikki asiaan liittyvät opukset, eikä vastausta vaan tunnu löytyvän. Harmittaa!
kannattaa käyttää googlea.
mikä estää myöskään tänne laittamasta kysymyksiäsi? :)
Juu. On kokeiltu Googlet ym. Kaikkialla on vain vastauksia sellaisiin kysymyksiin, jonka jo A/AB kortin suorittanut hallitsee. Jos ongelma on vähän kinkkisempi, on vastauksen löytyminen kahta kinkkisempää. Ongelmani koskee ajan käsittelyä Excelissä, mutta ongelman esittäminen voi olla täällä vähän vaikeaa. Kokeillaan kuitenkin:
Esimerkki:
Solu A1 ilmaisee ajanjakson alkamista, esim. 9:30
Solu B1 ilmaisee ajanjakson päättymistä esim. 15:25
Solussa C1 on kaava "=B1-A1", joka on siis ajanjakson pituus.
Kysymys:
Haluaisin soluun D4 kaavan, joka laskee ainoastaan klo 13 ja klo 16 VÄLILLE SATTUVAT tunnit ja minuutit. Kaavan tulisi toimia MYÖS silloin, jos ajanjakso alkaa (solu A1) klo 13 ja 16 välillä. Kaavan tulisi luonnollisesti toimia riippumatta siitä, milloin ajanjakso päättyy.
Uskon, että laskennan voi suorittaa yhdessä solussa ilman massiivisia apusoluvirityksiä. Jos joku osaa vastata tyhjentävästi kysymykseen, ei onnellani ole rajoja... :)
Heh, aika massiivisen kaavan sain tuosta aikaiseksi, mutta tällaisella mielestäni toimii (jos ymmärsin oikein, mitä tarkoitit):
=JOS(JA(A1<0.541666667;B1>0.666666667);0.666666667-0.541666667;JOS(JA(A1>0.541666667;B1>0.666666667);0.666666667-A1;JOS(JA(A1<0.541666667;B1<0.666666667);B1-0.541666667;JOS(JA(A1>0.541666667;B1<0.666666667);B1-A1))))
Englanninkielisessä Excelissä täytyy tietysti vaihtaa kaavat IF ja AND:ksi.
Luku 0.541666667 merkitsee klo 13:00:a ja 0.666666667 klo 16:00:a.
Loistavaa! Kiitos, Affe. Kaavassasi on vain yksi tenkkapoo. Mikäli tulokseksi tulee nolla ts. aikahaarukkaan (13.00-16.00) ei osu yhtään minuuttia, näyttää solu risuaitaa. Voiko sen korjata...?
Kiitos jokatapauksessa avustasi! :) :) :)
Tuota en ottanutkaan huomioon. Muuta kaava tällaiseksi, niin pitäisi tuonkin toimia:
=JOS(TAI(A1>0.666666667;B1<0.541666667);0;JOS(JA(A1<0.541666667;B1>0.666666667);0.666666667-0.541666667;JOS(JA(A1>0.541666667;B1>0.666666667);0.666666667-A1;JOS(JA(A1<0.541666667;B1<0.666666667);B1-0.541666667;JOS(JA(A1>0.541666667;B1<0.666666667);B1-A1;0)))))
Haa!
Joku muukin pohtii exceliä... vaikka en ihan välttämättä koko edellistä kysmystä ymmärtänyt (saati sitten vastausta)...
Mun ongelma on työaikataulukko. Osasin kyllä tehdä sellaisen, joka laskee yhteen päivän tunnit.
Eli kun lyö ekaan sarakkeeseen saapumisajan 8:00 ja tokaan poistumisajan esim 17:15 saa kolmanteen 9:15 työajaksi. Mutta mikään aivo-osaseni ei ymmärrä, miten nämä kolmannen sarakkeen tunnit saadaan yhteenlaskettua (kuukauden päättyessä)? tav. yhteenlaskukaava (jonka siis osaan) laskee ihan päin...
1) miksi?
2) miten voisi tehdä toisin?
3) osaisko joku selittää yksinkertaiselle yksinkertaisesti... (nyyh.)
JiiPeelle:
Kyllä mulla Excel laskee yhteen nuo ihan oikein ja selkokielisesti. Eli ihan perus summa-funktio, esim. =SUMMA(C1:C3). Tämän solun muotoiluna täytyy olla sopiva aikamuotoilu, muuten tuloksena voi olla vaikkapa desimaaliluku...
Jiipeelle:
Mikäli päivittäisten työaikojesi summa näyttää jotain aivan ihmeellistä, tee näin: klikkaa solua, johon summa lasketaan. Valitse MUOTOILE > SOLUT > valitse vasemmanpuoleisesta "luokka" -valikosta AIKA ja sen jälkeen oikeanpuoleisesta "laji" -valikosta vaihtoehto, joka näyttää todellisen summan (meikäläisellä muotoa 37:30:55).
Kyllä, Exceliin jää koukkuun. Monesti sitä miettii, miten ihmiskunta on pärjännyt vuosituhansia ilman sitä :)
Affelle suurkiitokset avusta! Jospa vain tietäisit miten paljon apua kaavastasi on...
[Krhm... pikemminkin "*taulukkolaskentaohjelmiin* jää koukkuun". Excel ei suinkaan ole ensimmäinen eikä viimeinen ja esim. täysin ilmaisella OpenOffice.org:n Calc:lla voi tehdä aivan samat asiat kuin sillä.]
On kyllä hienoa että on tarjolla ilmainen OpenOffice. Mutta kovin bugiselta tuo Calc vaikuttaa. :(
Mm. jos siinä haluaa avata Excelillä tehtyjä taulukkoja, kohdataan usein ongelmia. Hieman kehitystyötä vielä vaatisi.
Vähän pahaa pelkään, että netistä ja Excel-oppaista ei tosiaankaan löydy apuja tällaiseen edellä esitettyyn pähkinään. Nimittäin jos probleeman ratkaisuna on jokin kaava tai algoritmi, kyseessä on puhtaasti ohjelmointiasia. Ja silloin Excelin käyttäjä on kyllä täysin omillaan.
Ohjelmointihan voi olla yksinkertaisimmillaan juuri tällainen sovelluksen syöttökenttään kirjoitettu simppeli "if-then-else" -komentorakennelma, tai se voi olla lausekielellä, esim. C-kieli, kirjoitettu ja konekieliseksi käännetty vastaava komentorakennelma. Yhtä kaikki, kyseessä on pieni ja yksinkertainen algoritmi.
Netistä kyllä löytyy apuja excelismeihin kuten tuon päivämäärän esitysmuodon valintaan. Siinä onkin kyse itse Excel-sovellusohjelman käyttöominaisuuksista.
Statisti hei,
Jos tiedät netistä osoitteita (varsinkin suomenkielisiä), joista saa vinkkejä esim. Excelin tehokkaampaan käyttöön, niin kerro toki.
Yksi juttu vielä. Mitä eroa on tällä C -kielellä verrattuna tavallisiin Excel komentoihin? Mitä se mahdollistaa? Esimerkkejä?
Itse asiassa uskon, että Excelin omat on-line helpit ovat ehkä paras lähde saada tietää mitä kaikkea Excelillä voi tehdä soluja ja kuvaajia käsiteltäessä. Lisäksi siellä on selostettu kaikki nämä soluihin syötettävissä olevat komennot.
Netissä lienee aiheeseen liittyviä keskustelupalstoja. Itse en niitä ole juurikaan etsinyt, koska tukeudun tähän on-line helppiin sen mitä nyt itse Exceliä käytän.
C-kieli on ohjelmointikieli, jolla luodaan sovellusohjelmia. Sitä ei voi käyttää sellaisenaan Excelin yhteydessä. C-kielinen ohjelmointi on rakenteeltaan tällaista 'perinteisempää' ohjelmointia, jossa ohjelman eteneminen määritellään tämäntyyppisillä komennoilla. If-then-esle -komentorakenne on vain yksi esimerkki.
90-luvun puolen välin tietämillä C-kielen jälkeen tuli C++-kieli, joka on jatkokehitelmä perinteisestä C-kielestä. Ajatus on, että toimintoja eli komentosarjoja kapseloidaan niin, että ohjelmointikielen soveltaminen olisi helpompaa ja sujuvampaa. Näin ohjelmointivirheet (käyttäjän havaitsemat bugit) vähenevät, ohjelmistokehitys on nopeampaa ja ohjelmakoodin lukeminen olisi havainnollisempaa.
Itselläni on opintojeni yhteydessä hankittua kokemusta näistä kielistä. Työelämässä olen keskittynyt hardisasioihin enkä ole näitä ohjelmointijuttuja sen koommin juurikaan pohtinut.
Nykyisin käsittääkseni käytetään vieläkin korkeamman tason ohjelmointikieliä, joiden kehitystyökalut ovat jopa graafisia. Näin ohjelmistoja voidaan kehittää vieläkin sujuvammin vuokaavioiden yms. avulla.
Oli ohjelmointikieli mikä tahansa, se pitää kääntää kullekin prosessorialustan (Esim. Intel, AMD, Motorola, Texas Instruments, jne.) konekielelle erikseen erityisellä kääntäjällä. Nämä rautapalikat kun ymmärtävät edelleen vain nollia ja ykkösiä.
Nykyisin käsittääkseni suosituin ohjelmointikieli on Java, jota käytetään etenkin webbisovellusten tekemiseen. Javalla tehty webbisovellus ladataan kohdekoneeseen, jossa se käännetään reaaliaikaisesti kunkin koneen omalle konekielelle selaimessa. Näin samat webbisovellukset toimivat niin PC:ssä kuin Macissä. Java on käsittääkseni jatkokehitelmä C-kielestä.
Huhhuh! Kiitoksia tyhjentävästä vastauksesta! Jotain sain napattua talteen, mutta osa meni takaseinään niin, että rappaukset vaan karisee :)
Nyt en malta olla heittämättä toista pähkinää, kun asiantuntijoitakin näkyy olevan valmiustilassa.
Esimerkki on yksinkertainen:
Soluun A1 kirjotetaan päivämäärä, sanotaan nyt vaikka 23.9.04.
Kysymys 1. Onko Excelissä olemassa toimintoa, joka mahdollistaa sen, että jos kirjoitankin soluun A1 myöhemmin toisen päivämäärän (esim. 24.12.04), ohjelma ikään kuin siirtää, "tallentaa", solussa aikasemmin olleen päivämäärän (23.9.04) esimerkiksi soluun B1 ?
Kysymys 2. Jos vastaus kysymykseen 1 on myönteinen, onko näitä toimintoja mahdollista "ketjuttaa"? Tarkoita tällä sitä, että kun kirjoitan soluun A1 jälleen uuden päivämäärän, siirtyy edellinen päivämäärä (24.12.04) soluun B1 ja aikasemmin soluun B1 siirtynyt päivämäärä (23.9.04) siirtyisi edelleen uuteen soluun, vaikkapa C1.
Tämäkin toiminto toisi varmasti helpotusta monen ihmisen arkeen. Ajatellaanpa nyt vaikka niitä, jotka käsittelevät arkistoitavaa tavaraa tai hoitavat reskontraa /asiakashallintoa työkseen ja tarvitsevat omia "aputaulukoita" avukseen.
Makrolla on hyvin yksinkertaista tehdä tuollainen solujen arvojen siirto. Se tosin vaatii, että makro suoritetaan ennen uuden arvon syöttämistä ko. soluun (esimerkissä A1) eli sitä ei tietääkseni saa toimimaan "automaattisesti" syöttämällä uuden arvon.
Makron voi sitten kytkeä esim. pikanäppäimeen tai taulukkoon lisättävään painikkeeseen (esim "Uusi"-painike), jota painamalla makro suoritetaan.
Tuo on yksinkertaisin tapa, joka tuli mieleen.
Juu. On yksinkertaista...
Yritin. Yritin ja yritin. Ennen kuin luovun toivosta, niin ajattelin kysäistä, että miten em makro kannattaisi rakentaa. Jos siis ajatellaan, että kyseessä olis vaikka neljän päivämäärän ketju.
Riittäisikö Affella tai muilla viitseliäisyyttä antaa esimerkki komentosarjasta.
Kiitokset jo etukäteen.
tai oikeastaan....
Otetaan taas esimerkki.
Solu A1 on syöttösolu, johon syötetään summa. Sanotaan nyt vaikka 25€.
Luodaan taulukkoon näppäin, jonka nimeksi tulee "LISÄÄ".
Millainen makro kirjoitetaan, jotta soluun B2 kumuloituisi soluun A2 syötetyt summat aina kun "lisää" painiketta painetaan?
Nyt meni mielenkiintoiseksi! Maltankohan edes mennä nukkumaan... :)
Korjaus edelliseen kysymykseen:
Millainen makro kirjoitetaan, jotta soluun B1 kumuloituisi soluun A1 syötetyt summat aina kun "lisää" painiketta painetaan?
Innostuin jo niin, että solut vilisee silmissä... :)
Tuo vaatii pari apusolua, tai on ainakin selkeintä tehdä niiden avulla. Apusoluthan voi halutessaan piilottaa tai siirtää vaikka erilliseen apusolutaulukkoon, jonka senkin voi piilottaa.
Tuossa alla on esimerkki makrosta, joka käyttää apusoluina C1:ä ja D1:ä.
Sub Lisää()
Range("A1:B1").Select
Selection.Copy
Range("C1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
Application.CutCopyMode = False
Selection.ClearContents
End Sub
Ja tuo täytyy siis kirjoittaa Visual Basic Editorilla. Helpointa makro on tehdä nauhoittamalla tietty toimintosarja.
Tuo makro tyhjentää samalla solun A1 uuden arvon syöttöä varten.
Makron lisäksi soluun B1 täytyy tehdä kaava: =C1+D1
Sitten taulukkoon lisätään komentopainike ja painikkeeseen liitetään tuo makro (makron nimeksi on esimerkissä annettu Lisää).
Aina kun komentopainiketta painetaan, siirtyy solussa A1 oleva luku B1:n lisäykseksi.
-Affelle pusu poskelle. Mihin minä joutuisinkaan ilman Sinua?, sanoi Viceroy hykerrellen ja lisäsi
- Olen Sinulle pullakahvit velkaa!
: )
Hehe, kiitos :) Mukavaa, että voi olla avuksi.