Työpäivä=9-20.
Työntekijä1 on töissä 9-13.
Työntekijä2 on töissä 12-16.
Työntekijä3 on töissä 16-20.
Miten tarkistaa taulukkolaskennan keinoin että 9-20 on aina joku töissä?
Työntekijä1 on töissä 9-13.
Työntekijä2 on töissä 12-16.
Työntekijä3 on töissä 16-20.
Miten tarkistaa taulukkolaskennan keinoin että 9-20 on aina joku töissä?
Vastaukset 15
Vanhimmat
Yksi keino voisi olla vaikka Gantt-kaavio, joka näytää aika-akselilla työnajat.
Siitä näkee heti onko "välipäitä".
http://aijaa.com/UuwRxc
Ei kun se pitää tapahtua ohjelmallisesti. jos tuon koodaamalla tekisi niin esim 11 muistipaikkaa joista täyttäisi paikat 9-13, 12-16 ja 16-20 ja sitten silmukalla tarkistaisi onko kaikki 11 muistipaikkaa "täynnä". Vaan miten tuon tekisi Excelissä?
Toinen kysymys olisi että miten ohjaan yhden solun tuloksella useaa muuta solua?
Eli A1=5. A2=10. Noilla arvoilla pitäisi muutettaisiin solujen B5-B15 solujen arvo? Eli A1 määrää B:n sarakkeen eli B5 ja A2 sarakkeiden määrän(5 10=15)
Katso tuolta ratkaisu, ainakin noin mielestäni toimii.
Taulukkoon tehdään sitten vaikka ehdollinen muotoilu, joka nopeuttaa asian katsomista.
https://www.dropbox.com/sh/c1g080c2fd4lsoz/AADQeX8h6F_lqpBWUT4cwhPva?dl=0
Linkkisi on pelkkä linkki johonkin tiedostoon?
Eikö tuo aja aivan saman asian kuin Gantt-kaavio?
En ymmärrä miten kaavio ratkaisisi asian. Se ratkaisu pitää saada johonkin soluun.
Nyt käsitän paremmin mitä tarkoitit, aluksi en käsittänyt
https://www.dropbox.com/sh/c1g080c2fd4lsoz/AADQeX8h6F_lqpBWUT4cwhPva?dl=0
Linkki on linkki tiedostoon, jossa on ratkaisuvaihtoehto. On selvempää näyttää tiedosto kuin heittää tähän joku pitkä kaava.
Aijaa- sivu on hyvällä asialla.
Tämä oli mielenkiintoinen ongelma.
Valitettavasti en sattuneesta syystä voi avata tiedostoa. Olisin kiitollinen jos voisit laittaa kaavan tänne. Kiitos.
Menipä hankalaksi
=JOS(JA(LASKE.JOS(G8:G12;$U$1)>=1;LASKE.JOS(H8:H12;$U$1)>=1;LASKE.JOS(I8:I12;$U$1)>=1;LASKE.JOS(J8:J12;$U$1)>=1;LASKE.JOS(K8:K12;$U$1)>=1;LASKE.JOS(L8:L12;$U$1)>=1;LASKE.JOS(M8:M12;$U$1)>=1;LASKE.JOS(N8:N12;$U$1)>=1;LASKE.JOS(O8:O12;$U$1)>=1;LASKE.JOS(P8:P12;$U$1)>=1;LASKE.JOS(Q8:Q12;$U$1)>=1;LASKE.JOS(R8:R12;$U$1)>=1);$U$3;$V$3)
Ei tuosta ole hyötyä. Sorry
Mene tonne:
[email protected]
salasana: Excelonkivaa
Tee tiedostolle virustarkistus ja sitten katso ratkaisu
https://www.dropbox.com/sh/c1g080c2fd4lsoz/AADQeX8h6F_lqpBWUT4cwhPva?dl=0
linkissä olevasolu E9 kaavan voi korvata matriisilla
=IF(SUM(IF((G8:R8) (G9:R9) (G10:R10) (G11:R11) (G12:R12);1;0))=12;"Paikalla";"Pois")
Jos paikalla on yhtä aikaa työntekijöitä, tuleeko silloin Kundepuun ratkaisuksi yli 12 eli epätosi eli pois?
Pohdintaa vain
EI
ihan sama kuinka monta on paikalla samaan aikaan koska matriisikaavallani lasketaan BOOLEAN ALGEBRALLA eikä perus algebralla summaa (TRUE /FALSE)
eli rautalankaa asiasta...
Boolean algebrassa on olemassa kaksi arvoa 0 ja 1 eli
TRUE =1
FALSE=0
kun lasketaan yhteen arvoja summat on seuraavia
FALSE FALSE=0 0-TULOS 0
FALSE TRUE=0 1 TULOS 1
TRUE FALSE=1 0 TULOS 1
TRUE TRUE=1 1 TULOS1
toi viimeinen hämää pohdiskelijaakin ja normaalii algebrassahan tulos olisikin kaksi tai esim TRUE TRUE TRUE=1 1 1 TULOS 1
tulos olisi 3 normaali algebrassa, mutta BOOLEAN ALGEBRASSA on vain 0 ja 1 eli FALSE tai TRUE arvo ja eliminointisäännön mukaan 1 1 ei voi olla 0, joten sen on oltava 1
Koska muita arvoja ei ole kuin 0 ja 1 niin kaavani maksimitulos voi olla 12 eli kaikilla tunneilla on vähintään 1 tai useampi TRUE esiintymä ja tällöin jos kaava palauttaa arvon TRUE ja tekstin "Paikalla" ja vastaavasti jos kaikille tunneille ei ole työntekijää niin silloin arvon FALSE ja tekstin "Pois"
siis ei väliä kuinka monta "ykköstä" on summassa, niin tulos on aina 1
TRUE FALSE FALSE TRUE=1 0 0 1 TULOS 1
matriisikaavan yhteenlaskun tulos on seuraava
=IF(SUM(IF({1\1\1\1\1\2\1\1\1\2\1\1};1;0))=12;"Paikalla";"Pois")
kun sisempi jossittelu tehdään niin tulos on seuraava...
=IF(SUM({1\1\1\1\1\1\1\1\1\1\1\1})=12;"Paikalla";"Pois")
ja summan laskun jälkeen...
=IF(12=12;"Paikalla";"Pois")
ja jossin jälkeen...
=IF(TRUE;"Paikalla";"Pois")
ja lopputulos...
="Paikalla"
Selvittikö asian?
Keep EXCELing
@Kunde
Joo selvitti siinä mielessä, että tajuan taas itse osaavani kovin vähän.
Alkuperäistä kysyjää ei ole näkynyt, mikäköhän on tilanne?
Tätä voi käyttää, jos työaika ei tole täysiä tunteja. Funktion parametriksi annetaan tarpeellinen määrä rivejä kolmen sarakkeen leveydeltä (nimi, tuloaika, lähtöaika).
Funktio lajittelee henkilöt tuloajan mukaiseen järjestykseen ja tarkistaa milloin viimeinen toisen töissä ollessa tullut on lähtenyt.
Type tieto
nimi As String
tulo As Date
lähtö As Date
End Type
Function JokuPaikalla(r) As Boolean
d = r
n = UBound(d)
ReDim henkilö(n) As tieto
Dim tmp As tieto
aamu = CDate("9:00")
ilta = CDate("20:00")
i = 0
For j = 0 To n - 1
i = i 1
With henkilö(i)
.nimi = r(j * 3 1)
.tulo = r(j * 3 2)
.lähtö = r(j * 3 3)
End With
Next j
' lajittelu tuloajan mukaan
For i = 1 To n - 1
For j = i 1 To n
If henkilö(i).tulo > henkilö(j).tulo Then
tmp = henkilö(i)
henkilö(i) = henkilö(j)
henkilö(j) = tmp
End If
Next j
Next i
If henkilö(1).tulo