Kirjoittaja Aihe: Aikaero taulukkolaskennassa, vuorokauden ylitys [Ratkaistu]  (Luettu 2453 kertaa)

AimoE

  • Käyttäjä
  • Viestejä: 2707
    • Profiili
Yritän tehdä ehdollista muotoilua seuraavassa tilanteessa:

Aarakkeessa A on kellonaikoja, sarakkeessa B on sarakkeen A kahden peräkkäisen rivin aikojen erotus. Siis esimerkiksi A1=12:00, A2=14:05 ja B2=A2-A1 eli 02:05. Kun lisään sarakkeelle B ehdolisen muotoilun CURRENT()>1/12, saan erottumaan B-sarakkeen arvot, jotka ovat enemmän kuin kaksi tuntia. Ongelma tulee kun A2 on seuraavan vuorokauden puolella, esimerkiksi A1=22:30 ja A2=00:25, jolloin B2 näyttää  01:55 jota ei pitäisi korostaa, tai A1=22:30 ja A2=00:35, jolloin B2=02:05 pitäisi korostua. En ole keksinyt millä ehdolla muotoilun saa oikein.
« Viimeksi muokattu: 25.02.20 - klo:13.29 kirjoittanut AimoE »

jarmala

  • Käyttäjä
  • Viestejä: 774
    • Profiili
Vs: Aikaero taulukkolaskennassa, vuorokauden ylitys
« Vastaus #1 : 24.02.20 - klo:14.48 »
Yritän tehdä ehdollista muotoilua seuraavassa tilanteessa:

Aarakkeessa A on kellonaikoja, sarakkeessa B on sarakkeen A kahden peräkkäisen rivin aikojen erotus. Ongelma tulee kun A2 on seuraavan vuorokauden puolella, esimerkiksi A1=22:30 ja A2=00:25, jolloin B2 näyttää  01:55 jota ei pitäisi korostaa, tai A1=22:30 ja A2=00:35, jolloin B2=02:05 pitäisi korostua. En ole keksinyt millä ehdolla muotoilun saa oikein.

if (a2 <a1) then b2=a2-a1+1

Jos taas aikaleimoissa on myös päivämäärä, niin silloin pelkkä a2-a1 menee ihan oikein.
Ubuntu 18.04 LTS, Gnome Flashback Metacity, Xeon E3-1245 V2, 8 GB
Ubuntu 22.04 LTS, KDE Plasma, Celeron N5105, 8 GB

AimoE

  • Käyttäjä
  • Viestejä: 2707
    • Profiili
Vs: Aikaero taulukkolaskennassa, vuorokauden ylitys
« Vastaus #2 : 24.02.20 - klo:17.41 »
Ehdotat siis että muokkaisin solussa olevaa kaavaa. Kaavaksi muunnettuna tuo ehdotus on olisi:

Koodia: [Valitse]
a2-a1+if(a2<a1;1)+style(if(current()>1/12;"Huomio"))
mutta en haluaisi viedä tyyliasetusta solun kaavan sisään, vaan haluaisin pitää sen erillään solun sisällöstä. Tätä varten tarvitsen ehtoeditoriin kakkosehdon, ja sen ehdon muotoilun pitäisi olla yksinkertaista perusmatematiikkaa. Mutta kun ei aivot oikein toimi.
« Viimeksi muokattu: 24.02.20 - klo:17.44 kirjoittanut AimoE »

mpiso

  • Käyttäjä
  • Viestejä: 655
    • Profiili
Vs: Aikaero taulukkolaskennassa, vuorokauden ylitys
« Vastaus #3 : 24.02.20 - klo:18.11 »
Suomiasetuksilla:

Koodia: [Valitse]
=JOS(A2 <A1;A2-A1+1;A2-A1)
Sitten otat ehdollisesta muotoilusta käyttöön suurempi kuin 1/12 ja vaikka Bad niin solu muuttuu punaiseksi jos ehto täyttyy. Silloin muotoilu ei näy kaavassa.

Edit: Löytyy Muotoilu > Ehdollinen muotoilu > Ehto
« Viimeksi muokattu: 25.02.20 - klo:11.14 kirjoittanut mpiso »

AimoE

  • Käyttäjä
  • Viestejä: 2707
    • Profiili
Vs: Aikaero taulukkolaskennassa, vuorokauden ylitys
« Vastaus #4 : 25.02.20 - klo:13.28 »
No, tämän päivän tuoreilla aivoilla kokeilin eri arvoja ja toimivaksi kakkosehdoksi löytyi arvoväli
-1/12 .. -11/12
En kyllä osaa muotoilla lauseketta josta sen olisi voinut helposti päätellä, mutta pääasia että ratkaisu löytyi. Kelloartimetiikka on jotenkni liian simppeliä mun aivoille.

mpiso

  • Käyttäjä
  • Viestejä: 655
    • Profiili
Vs: Aikaero taulukkolaskennassa, vuorokauden ylitys [Ratkaistu]
« Vastaus #5 : 25.02.20 - klo:20.02 »
Käsitin edellisen kysymyksesi aivan väärin. Halusitkin mieluimmin kaksi ehdollista muotoilua, etkä tuota jarmalan esittämää ehtolausetta.

Oikeastaan tuota olisi pitänyt heti ajatella, ei vain tullut mieleen. Taulukkolaskennalle 24 tuntia on luku 1. Jos mennään seuraavan vuorokauden puolelle, niin samalla kaavalla (lopetusaika - aloitusaika) saadaan negatiivinen tulos. Ohjelma esittää sen kuitenkin oikein positiivisena erona, ellei ole valittuna muotoilua [ TT ]:MM. Ehdollinen muotoilu näkee sen kuitenkin negatiivisena.

AimoE

  • Käyttäjä
  • Viestejä: 2707
    • Profiili
Vs: Aikaero taulukkolaskennassa, vuorokauden ylitys [Ratkaistu]
« Vastaus #6 : 25.02.20 - klo:20.38 »
Käsitin edellisen kysymyksesi aivan väärin. Halusitkin mieluimmin kaksi ehdollista muotoilua, etkä tuota jarmalan esittämää ehtolausetta.

Oikeastaan tuota olisi pitänyt heti ajatella, ei vain tullut mieleen. Taulukkolaskennalle 24 tuntia on luku 1. Jos mennään seuraavan vuorokauden puolelle, niin samalla kaavalla (lopetusaika - aloitusaika) saadaan negatiivinen tulos. Ohjelma esittää sen kuitenkin oikein positiivisena erona, ellei ole valittuna muotoilua [ TT ]:MM. Ehdollinen muotoilu näkee sen kuitenkin negatiivisena.

Kyllä minulle yksikin ehto riittäisi, ja sen voisi koota or-lauseella, mutta minusta täsä asiassa kaksi on selkeämpi.

Sitä en kyllä ymmärrä miten kuvittelet että sen jarmalan esittämän ehtolauseen voisi tökätä ehtoeditoriin? Minähän kerroin jo ekassa viestissä että kyse on sarakkeista, eikä vain yksittäisistä soluista.

jarmala

  • Käyttäjä
  • Viestejä: 774
    • Profiili
Vs: Aikaero taulukkolaskennassa, vuorokauden ylitys [Ratkaistu]
« Vastaus #7 : 26.02.20 - klo:08.50 »
Sitä en kyllä ymmärrä miten kuvittelet että sen jarmalan esittämän ehtolauseen voisi tökätä ehtoeditoriin? Minähän kerroin jo ekassa viestissä että kyse on sarakkeista, eikä vain yksittäisistä soluista.

Tarkoitin vain lyhyesti esittää ratkaisun ehtolauseongelmaasi. Siis:

1. Annat sen ehtolauseesi soluen värjäykseen olla ennallaan niin kuin se aina on sinulla ollut.
2. Muutat sitä B-sarakkeen laskentakaavaa: b2=if(a2<a1;a2-a1+1;a2-a1)
Ubuntu 18.04 LTS, Gnome Flashback Metacity, Xeon E3-1245 V2, 8 GB
Ubuntu 22.04 LTS, KDE Plasma, Celeron N5105, 8 GB

AimoE

  • Käyttäjä
  • Viestejä: 2707
    • Profiili
Vs: Aikaero taulukkolaskennassa, vuorokauden ylitys [Ratkaistu]
« Vastaus #8 : 26.02.20 - klo:09.14 »
Johan minä kerroin että en halua muuttaa solun kaavaa, vaan haluan tehdä muotoilun erikseen. Ja ratkaisu oli lopulta juuri niin yksinkertainen kuin arvelinkin. Miksi tehdä sama asia monimutkaisesti?

mpiso

  • Käyttäjä
  • Viestejä: 655
    • Profiili
Vs: Aikaero taulukkolaskennassa, vuorokauden ylitys [Ratkaistu]
« Vastaus #9 : 26.02.20 - klo:12.32 »
Sitä en kyllä ymmärrä miten kuvittelet että sen jarmalan esittämän ehtolauseen voisi tökätä ehtoeditoriin? Minähän kerroin jo ekassa viestissä että kyse on sarakkeista, eikä vain yksittäisistä soluista.

En ole ehdottanut sellaista. Minä ehdotin, että ne pidetään erillään, eli kaava solussa ja ehto koskien saraketta. Mielestäni on aivan yhtä helppoa kopioida =JOS(A2 <A1;A2-A1+1;A2-A1) kuin =A2-A1. Tai vetää ylhäältä alas ja poistaa kohdista missä ei tarvita. Mutta tuota ei kannata käyttää jos haluaa pitää kaavan yksinkertaisena, ei ainakaan nyt kun löysit paremman vaihtoehdon.

Pidin tuosta jarmalan ehdotuksesta, koska pluspuoli tarvitsee vain yhden ehdon koska 1/12 vastaa kahta tuntia ja 1 on 24 tuntia. Negatiivisella puolella on vaikeampaa koska -1 vastaa 00:00 ja yksi ehto -11/12 joka vastaa kahta tuntia ei riitä, koska liikutaan kohti positiivista puolta. Ehto on, kuten huomasit, asetettava johonkin väliin. Jos haluaa asettaa toisen rajan sekuntia vaille 24 tuntia, on toinen ehto -1/86401. Sinulla on -1/12 joka tarkoittaa, että 22 tunnin jälkeen korostus poistuu miinuspuolelta. Ilmeisesti pidempiä aikoja ei esiinny.

Jankutan tätä, samoin kuin lisäsin polun, koska näistä voi olla jollekin muulle apua.

Korjaus -1/12 ei -1/2

Korjaus 2: Kokeilin vielä tehdä taulukon jossa olisi tuo sekunnin ero 24 tuntiin. Huomasi, että kahden sekunnin jälkeen korostus katosi. Pitää siis olla -1/86401 eikä -1/57600. Jotenkin nämä aikaan sidotut ehdot on tehty turhan vaikeaksi, koska jos muutan -1/57600 ajaksi se näyttää 23:59:59.
« Viimeksi muokattu: 26.02.20 - klo:16.17 kirjoittanut mpiso »

AimoE

  • Käyttäjä
  • Viestejä: 2707
    • Profiili
Vs: Aikaero taulukkolaskennassa, vuorokauden ylitys [Ratkaistu]
« Vastaus #10 : 26.02.20 - klo:12.43 »
Minä taas haluan pitää kaavan ykisnkertaisena koska ei ole mitään syytä muuttaa sitä monimutkaiseksi. Sitä varten se ehtoeditori on olemassa ettei kaavoja tarvitse muokata, samalla tavalla kuin CSS on olemassa sitä varten että HTML-koodiin ei tarvitse sotkea mitään ylimääräistä.