Autofill ei täytä oikein kellonaikoja

Anonyymi

Kirjoita kellonajat allekkain kahteen sarakkeeseen tunnin välein. Toiseen käsin, toiseen käyttäen automaattista täyttöä. Sarakkeet näyttävät identtisiltä, mutta jos verrataan eri riveillä olevia aikoja, Excel ei olekaan välttämättä samaa mieltä. Kahden "saman" ajan erotuksessa on usein eroa, n. 1e-15. Vähän, mutta kuitenkin sen verran, että esim. 12:00 ei olekaan 12:00. Tällainen aiheuttaa yllättäviä virheitä.

Onko Excelissä muuta ratkaisua, kuin naputella kaikki kellonaja käsin tai käyttää kaavoja niiden muodostamiseen? LibreOfficessa täyttö toimii oikein.

7

293

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Anonyymi

      En usko että LibreOfficessa tai missään muussakaan softassa toimisi oikein, eli toimii sitten jollakin toisella tavalla väärin. Masiinoilla, ja myös ihmisillä, ei ole ei ole kykyä käsitellä päättymättömiä desimaaleja.

      Jos haluaa Excelissä esim sekuntin resoluution niin kasku: =ROUND(A1,5) tuottaa sen.

      • Anonyymi

        Ei se ole uskon asia, vaan kokeilun tulos. Ilmeisesti Libren täyttötoiminto tunnistaa tiedot ensin kellonajoiksi ja toimii sen mukaan.


      • Anonyymi
        Anonyymi kirjoitti:

        Ei se ole uskon asia, vaan kokeilun tulos. Ilmeisesti Libren täyttötoiminto tunnistaa tiedot ensin kellonajoiksi ja toimii sen mukaan.

        En usko että yhden ihmisen elämän aikana ehtisi kokeilemalla varmistamaan laskennan virheettömyyden. Kuten jos sanoin LibreCalc toimii sitten jollakin toisella tavalla väärin.

        Sekä Excel että LibreOffice käyttävät samaa IEEE 754 speksiä liukulukujen käsittelemisen, jossa tarkkuus on speksattu 15 digittiin.

        Yksi tunti on Excelissä 1/24, joka on 15 digitillä ilmastuna yhtä kuin 0.0416666666666667 mutta todellisuudessa se on päättymätön desimaaliluku 0.041666666666666... niin pyöristysvirheitä väistämättä syntyy kun sarjaa kasvatetaan, silloin kun käytetään liukulukuja.

        Tee näin:

        1) Formatoi solu A1 muotoon: "Fraction ja ja siinä optio "Up to three digits (312/943)"
        2) kirjoita soluun A1: 1/24 (ilman yhtäsuuruusmerkkiä)
        3) kirjoita soluun A2: =A1 1/24 (yhtäsuuruusmerkin kanssa)
        4) Kopioi tai raahaa A2 solua niin pitkälle alas kuin on sarjaa on tarvis.
        5) Valitse koko sarja.
        6) Formatoi solut aikamuotoon.


      • Anonyymi
        Anonyymi kirjoitti:

        En usko että yhden ihmisen elämän aikana ehtisi kokeilemalla varmistamaan laskennan virheettömyyden. Kuten jos sanoin LibreCalc toimii sitten jollakin toisella tavalla väärin.

        Sekä Excel että LibreOffice käyttävät samaa IEEE 754 speksiä liukulukujen käsittelemisen, jossa tarkkuus on speksattu 15 digittiin.

        Yksi tunti on Excelissä 1/24, joka on 15 digitillä ilmastuna yhtä kuin 0.0416666666666667 mutta todellisuudessa se on päättymätön desimaaliluku 0.041666666666666... niin pyöristysvirheitä väistämättä syntyy kun sarjaa kasvatetaan, silloin kun käytetään liukulukuja.

        Tee näin:

        1) Formatoi solu A1 muotoon: "Fraction ja ja siinä optio "Up to three digits (312/943)"
        2) kirjoita soluun A1: 1/24 (ilman yhtäsuuruusmerkkiä)
        3) kirjoita soluun A2: =A1 1/24 (yhtäsuuruusmerkin kanssa)
        4) Kopioi tai raahaa A2 solua niin pitkälle alas kuin on sarjaa on tarvis.
        5) Valitse koko sarja.
        6) Formatoi solut aikamuotoon.

        Olihan taas höpötystä.
        Excelissä laskentatarkkuus on 15 numeroa, piste.


      • Anonyymi
        Anonyymi kirjoitti:

        En usko että yhden ihmisen elämän aikana ehtisi kokeilemalla varmistamaan laskennan virheettömyyden. Kuten jos sanoin LibreCalc toimii sitten jollakin toisella tavalla väärin.

        Sekä Excel että LibreOffice käyttävät samaa IEEE 754 speksiä liukulukujen käsittelemisen, jossa tarkkuus on speksattu 15 digittiin.

        Yksi tunti on Excelissä 1/24, joka on 15 digitillä ilmastuna yhtä kuin 0.0416666666666667 mutta todellisuudessa se on päättymätön desimaaliluku 0.041666666666666... niin pyöristysvirheitä väistämättä syntyy kun sarjaa kasvatetaan, silloin kun käytetään liukulukuja.

        Tee näin:

        1) Formatoi solu A1 muotoon: "Fraction ja ja siinä optio "Up to three digits (312/943)"
        2) kirjoita soluun A1: 1/24 (ilman yhtäsuuruusmerkkiä)
        3) kirjoita soluun A2: =A1 1/24 (yhtäsuuruusmerkin kanssa)
        4) Kopioi tai raahaa A2 solua niin pitkälle alas kuin on sarjaa on tarvis.
        5) Valitse koko sarja.
        6) Formatoi solut aikamuotoon.

        Libressä tunti on aina 0,0416666666666667 ja vuorokausi on 1. Aina, riippumatta siitä, kirjoitetaanko aika käsin, käytetäänkö automaattista täyttöä, lisätäänkö edelliseen 1/24, tai "1:00".

        Excelissä tunnin väli vaihtelee.
        Käsin kirjoitettujen peräkkäisten tuntien erotus voi olla myös 0,0416666666666666.
        Ohjeesi mukaan täyttäen tunti on välillä 1:00 – 11:00 0,0416666666666667, mutta siitä eteenpäin, yllätys yllätys, se onkin 0,0416666666666666. Excelin murtolukuesitys ei paranna tarkkuutta. Se on pelkkä formatointi, kuten päivämäärä ja aikakin.
        Automaattisella täytöllä kahden peräkkäisen erotus vaihtelee vielä enemmän, 0,0416666666666660 – 0,0416666666666671.

        Ajassa nuo poikkeamat ovat täysin mitättömiä. Mutta koska melkein sama ei ole yhtä kuin, muutaman pikosekunnin pilkun nussiminen voi aiheuttaa laskuissa tunnin virheen. Tapauksesta riippuen jopa suuremman. Jos olet täyttänyt kellonajat taulukkoon automaattisesti, Excel välttämättä löydäkään siitä haluamaasi kellonaikaa, vaan tarjoaa edellistä tai seuraavaa.


      • Anonyymi
        Anonyymi kirjoitti:

        Libressä tunti on aina 0,0416666666666667 ja vuorokausi on 1. Aina, riippumatta siitä, kirjoitetaanko aika käsin, käytetäänkö automaattista täyttöä, lisätäänkö edelliseen 1/24, tai "1:00".

        Excelissä tunnin väli vaihtelee.
        Käsin kirjoitettujen peräkkäisten tuntien erotus voi olla myös 0,0416666666666666.
        Ohjeesi mukaan täyttäen tunti on välillä 1:00 – 11:00 0,0416666666666667, mutta siitä eteenpäin, yllätys yllätys, se onkin 0,0416666666666666. Excelin murtolukuesitys ei paranna tarkkuutta. Se on pelkkä formatointi, kuten päivämäärä ja aikakin.
        Automaattisella täytöllä kahden peräkkäisen erotus vaihtelee vielä enemmän, 0,0416666666666660 – 0,0416666666666671.

        Ajassa nuo poikkeamat ovat täysin mitättömiä. Mutta koska melkein sama ei ole yhtä kuin, muutaman pikosekunnin pilkun nussiminen voi aiheuttaa laskuissa tunnin virheen. Tapauksesta riippuen jopa suuremman. Jos olet täyttänyt kellonajat taulukkoon automaattisesti, Excel välttämättä löydäkään siitä haluamaasi kellonaikaa, vaan tarjoaa edellistä tai seuraavaa.

        "Excelin murtolukuesitys ei paranna tarkkuutta"

        Kyllä parantaa. Ei voi tehdä täydelliseksi koska päättymättömiä desimaalilukuja ei voi esittää Exelin käyttämässä IEEE 754 speksissä jossa lukuarvot tallennetaan 64-bitillä, monin eri tavoin, yksi tapa on sekaluku. Tee Excelissä seuraavasti:

        Formatoi A sarakkeen solut numeroiksi 15 desimaalilla
        Kirjoita soluuun A1 =1/3
        Kopioi solu A1
        Paste/Special/Values, soluun A1
        Nyt solussa A1 on ja näkyy arvo 0,333333333333333
        Kopioi A1 soluihin A2 ja A3
        Kirjoita soluun A4: =SUM(A1:A3)
        Solun A4 arvo on: 0.999999999999999

        Formatoi B sarakkeen solut muotoon "Fraction" ja ja siinä optio "Up to three digits (312/943)"
        Kirjoita soluuun B1 murtoluku: 1/3 (ilman yhtäsuurusmerkkiä)
        Nyt solussa B1 on ja näkyy arvo 1/3
        Kopioi B1 soluihin B2 ja B3
        Kirjoita soluun B4: =SUM(B1:B3)
        Solun B4 arvo on: Tasan 1

        Näitä pyöristysvirheitä tapahtuu kaikessa laskennassa, ei pelkästään ajan kanssa. Aina kun laskennan tuloksena on päättymättömiä desimaaleja. Fraction tallennusmuoto on siitä kiusallinen että ajan ollessa kyseessä se on hieman karhea, noin 1/943 vuorokautta, ja silloin kun tulosta ei voida esittää 312/943 murto-osan tarkkuudella niin Excel muuntaa luvun 15 digitin liukuluvuksi.


      • Anonyymi
        Anonyymi kirjoitti:

        "Excelin murtolukuesitys ei paranna tarkkuutta"

        Kyllä parantaa. Ei voi tehdä täydelliseksi koska päättymättömiä desimaalilukuja ei voi esittää Exelin käyttämässä IEEE 754 speksissä jossa lukuarvot tallennetaan 64-bitillä, monin eri tavoin, yksi tapa on sekaluku. Tee Excelissä seuraavasti:

        Formatoi A sarakkeen solut numeroiksi 15 desimaalilla
        Kirjoita soluuun A1 =1/3
        Kopioi solu A1
        Paste/Special/Values, soluun A1
        Nyt solussa A1 on ja näkyy arvo 0,333333333333333
        Kopioi A1 soluihin A2 ja A3
        Kirjoita soluun A4: =SUM(A1:A3)
        Solun A4 arvo on: 0.999999999999999

        Formatoi B sarakkeen solut muotoon "Fraction" ja ja siinä optio "Up to three digits (312/943)"
        Kirjoita soluuun B1 murtoluku: 1/3 (ilman yhtäsuurusmerkkiä)
        Nyt solussa B1 on ja näkyy arvo 1/3
        Kopioi B1 soluihin B2 ja B3
        Kirjoita soluun B4: =SUM(B1:B3)
        Solun B4 arvo on: Tasan 1

        Näitä pyöristysvirheitä tapahtuu kaikessa laskennassa, ei pelkästään ajan kanssa. Aina kun laskennan tuloksena on päättymättömiä desimaaleja. Fraction tallennusmuoto on siitä kiusallinen että ajan ollessa kyseessä se on hieman karhea, noin 1/943 vuorokautta, ja silloin kun tulosta ei voida esittää 312/943 murto-osan tarkkuudella niin Excel muuntaa luvun 15 digitin liukuluvuksi.

        Kokeilin myös kahdella eri Office-versiolla Office Professional Plus 2019 ja 365 Apps for enterprise. Samoin tuloksin. Summaksi sain aina

        Esitystapa ei vaikuta laskentatarkkuuteen, koska Excel ei käsittele lukuja murtolukumuodossa. Vaikka syötät soluun 1/3 syöttörivilä on silti 0,333333333333333. Kolmen summaksi tulee kuitenkin aina tasan 1. En onnistunut saamaan 0,999999999999999.

        Libre toimii tässä samalla tavalla.


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Persujen mukaan rasismi on huumoria

      Vaan kun koomikko kutsui Halla-ahoa fasistiksi, niin piti haastaa oikeuteen. Mihin se huumorinitaju yhtäkkiä hävisi? ⠀
      Maailman menoa
      251
      6460
    2. Rasismia kaikkialla näkevät ovat Suomen tyhmimpiä ihmisiä

      ja monillahan kuluu myös mielialalääkkeitä, eli päässä on ongelmia. Mutta he eivät tajua kuinka paljon ja ihan todellis
      Maailman menoa
      198
      6014
    3. Ei kahta sanaa etteikö Petteri Orpo hyväksy rasismia

      Koska jatkaa hallituksessa rasistisen perussuomalaisiksi itseään kutsuvan puolueen kanssa. Se on Petteri Orpon arvomaai
      Maailman menoa
      22
      5561
    4. Mitkäs nuorisoporukat ovat toisia nuoria ryöstelleet (selvää rassismia)

      No poliisi kertoo, että maahanmuuttajataustaisia ovat, ja isot porukat sillä yhden suomalaisen uhrin kimpussa on ollut j
      Maailman menoa
      125
      4328
    5. Hallitus on kaadettava ja Orpon on erottava

      Mikään muu hallitus ei ole oman elämäni aikana tuhonnut näin paljon tämän maan taloutta ja työllisyyttä sekä suomen main
      Maailman menoa
      151
      3568
    6. Lasse Lehtonen vaatii persuja pyytämään anteeksi aasialaisilta

      Persut ova romahduttaneet Suomen maakuvan parissa päivässä negatiiviseksi rasismillaan ja se alkaa vaikuttamaan jo Suome
      Maailman menoa
      130
      3373
    7. HS 12/25 kysely: persut romahti, demarit raketoi

      Kyyti on kylmää persuleirissä, saattaa vetää siellä silmätkin viirulleen. Sen sijaan SDP:n puoluetoimistolla voidaan pok
      Maailman menoa
      23
      3066
    8. Rasismi rapauttaa Suomen mainetta ja hallituksen hiljaisuus pahentaa vahinkoa

      Finnairin viesti Japanista on pysäyttävä: suomalaisen politiikan rasismikohut heijastuvat suoraan matkustuspäätöksiin ja
      Maailman menoa
      276
      2530
    9. Töppö-persut ovat todella tyhmiä

      sen kertoo tämäkin avaus: "Persujen suosio vain laskee" Töppö-persu vaan unohtaa, että ennen tätä galluppia persujen kan
      Maailman menoa
      8
      2512
    10. Lasse Lehtonen palasi ambulanssilennolla Suomeen

      Nyt on syytä lopettaa irvailu.
      Maailman menoa
      138
      2377
    Aihe