Datums tellen binnen periode

Pagina: 1
Acties:

  • ivom
  • Registratie: Januari 2003
  • Laatst online: 24-02 19:33
Wat is de formule om een aantal datums te tellen binnen een periode.

Bijv.
A1 12-12-2006
A2 13-12-2005
A3 14-06-2007
A4 15-11-2006

B10 01-01-2006 (startdatum periode)
B11 31-12-2006 (einddatum periode)

Kwam neit verder met =AANTAL.ALS(A:A;">01-01-2006"),
gaf anders een foutmelding.
Is er geen makkelijker wizard in 2007 om zulke 'simpele formules te creeeren in excel 2007?

  • job
  • Registratie: Februari 2002
  • Laatst online: 03-07 23:31

job

De formule werkt hier prima.
Het enige probleem met A:A is, dat als je dus de formule zelf ook in kolom A zet je een foutmelding krijgt.
oplossingen: De formule in kolom B zetten, of ipv bijvoorbeeld het ongelimiteerde A:A te veranderen naar A1:A30 (of hoe groot je je bereik wilt laten zijn).

[ Voor 90% gewijzigd door job op 18-11-2007 13:45 ]


  • ivom
  • Registratie: Januari 2003
  • Laatst online: 24-02 19:33
De bedoeling is dat hij het aanal telt tussen de 2 datums in.

Wil dus het aantal datums weten tussen 1-1-2006 en 1-1-2007 bijvoorbeeld.

  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 18:42
=SOM(ALS(EN(A:A>B$10;A:A<B$11);1;0))

Dit is een matrixformule, dus als je deze in je formulebalk hebt getypet sluit je niet af met een ENTER, zoals normaal, maar met CTRL-SHIFT-ENTER.

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Aantal tussen 2006 en 2007 is 'aantal(<2007)-aantal(<2006)' :Y)

edit: bovenstaande is natuurlijk pseudocode.

[ Voor 27% gewijzigd door F_J_K op 18-11-2007 14:13 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • job
  • Registratie: Februari 2002
  • Laatst online: 03-07 23:31

job

ivom schreef op zondag 18 november 2007 @ 13:49:
De bedoeling is dat hij het aanal telt tussen de 2 datums in.

Wil dus het aantal datums weten tussen 1-1-2006 en 1-1-2007 bijvoorbeeld.
Stom van mij.

Als bovenstaande oplossingen niet werken zou je hier eens kunnen kijken: http://www.ozgrid.com/Excel/count-if.htm
Daar staan behalve de matrixformule van onkl ook 2 andere methoden in.
Zijn helaas engelse termen, dus die moet je even omzetten naar de nederlandse termen.
Maar daarmee moet je er uit komen :).

[ Voor 6% gewijzigd door job op 18-11-2007 14:36 ]


  • ivom
  • Registratie: Januari 2003
  • Laatst online: 24-02 19:33
onkl schreef op zondag 18 november 2007 @ 14:07:
=SOM(ALS(EN(A:A>B$10;A:A<B$11);1;0))

Dit is een matrixformule, dus als je deze in je formulebalk hebt getypet sluit je niet af met een ENTER, zoals normaal, maar met CTRL-SHIFT-ENTER.
Deze geeft altijd een 1 of 0 terug, verder doet hij het wel goed, alleen ik zou het getal 4 terug moeten krijgen en dat wil niet lukken met deze formule?

ik heb al geprobeerder met het AANTAL.ALS, maar deze geeft telkens een foutmelding

Nog ideeen?

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Wat is 'een foutmelding', waarom krijg je die precies? En waarom werkt mijn manier niet bij jou? Werkt hier prima :)

Let hoe dan ook op het verschil tussen > en >= resp. < en <=.

Edit: en de matrixformule kan veel eenvoudiger, zoals ook op die site wordt genoemd. Neem dan (als matrixberekening) de som van (A1:An>B10)*(A1:An<B11)

Overigens moet je niet verwachten dat er kant-en-klare antwoorden komen in hapklare brokken, daar is GoT niet voor bedoeld, denk ook zelf even na, zoals waarom je 0 of 1 terug krijgt ;)

[ Voor 52% gewijzigd door F_J_K op 18-11-2007 19:30 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • ivom
  • Registratie: Januari 2003
  • Laatst online: 24-02 19:33
F_J_K schreef op zondag 18 november 2007 @ 19:20:
Wat is 'een foutmelding', waarom krijg je die precies? En waarom werkt mijn manier niet bij jou? Werkt hier prima :)

Let hoe dan ook op het verschil tussen > en >= resp. < en <=.

Edit: en de matrixformule kan veel eenvoudiger, zoals ook op die site wordt genoemd. Neem dan (als matrixberekening) de som van (A1:An>B10)*(A1:An<B11)

Overigens moet je niet verwachten dat er kant-en-klare antwoorden komen in hapklare brokken, daar is GoT niet voor bedoeld, denk ook zelf even na, zoals waarom je 0 of 1 terug krijgt ;)
De matrix formule gaat ook goed. Dat hij een 1 of 0 terug geeft met deze formule gaat perfect.
=AANTAL(ALS(EN(A1:A6>D$1;A1:A6<F$1);1;0))

Krijg hem alleen niet werkend met het commando AANTAL.ALS en dan de 2 datums.

Met 1 datum en dan de datum zelf invullen werkt het ook:
=AANTAL.ALS(A1:A6;">01-01-2006")

Maar met 2 datums, hoe doe je het dan? DHeb al wat geprobeerd als:
=AANTAL.ALS(A1:A6;EN(">01-01-2006";"<01-01-2007"))

Ik snap niet dat het bij jou wel werkt, kun je me dat excell sheet ook mailen?

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 19:03

Dido

heforshe

F_J_K schreef op zondag 18 november 2007 @ 14:12:
Aantal tussen 2006 en 2007 is 'aantal(<2007)-aantal(<2006)' :Y)
Dit lijkt me toch echt het meest voor de hand liggende, eenvoudige, inzichtelijke en makkelijst te implementeren antwoord :)

Wat betekent mijn avatar?


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Eensch :+
Ik snap niet dat het bij jou wel werkt, kun je me dat excell sheet ook mailen?
Nee, niet hier vandaan. En zie ook die laatste zin in mij vorige reply ;)
Aantal.als heeft (voor zo ver ik het zie) geen zin in een matrixberkening. En de matrixberekening die ik geef is een andere dan die onkl gebruikt, maar werkt ook perfect.

Overigens hoef je niet met de hand een datum in te vullen. ">01-01-2006" doet hetzelfde als ">"&B10. En zoals ik al zei staan je grenswaarden verkeerd. (In mijn voorbeeld van een matrixberekening trouwens ook).

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

ivom schreef op maandag 19 november 2007 @ 11:46:
[...]
Maar met 2 datums, hoe doe je het dan? DHeb al wat geprobeerd als:
=AANTAL.ALS(A1:A6;EN(">01-01-2006";"<01-01-2007"))
Wat snap je hier niet aan?
Aantal tussen 2006 en 2007 is 'aantal.als(<2007) - aantal.als(<2006)'
let op: pseudocode :)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Mar2zz
  • Registratie: September 2007
  • Laatst online: 20-08-2025
quote:
Aantal tussen 2006 en 2007 is 'aantal.als(<2007) - aantal.als(<2006)'
let op: pseudocode :)

klopt dat 2007 wel? Een datum is een numerieke code in de achtergrond. 1-1-2007=39083 en 1-1-2006= 38718 dus dan zou het aantal datums zijn tussen 1-1-2007 en 31-12-2005 >>>>> aantal.als(<39083) - aantal.als(<38717)

anders kijkt ie tussen 28-06-1905 en 29-06-1905

[ Voor 34% gewijzigd door Mar2zz op 19-11-2007 14:57 ]


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Natuurlijk klopt dat niet ;)
let op: pseudocode :)
edit:
Over onderstaande: whehe, zo kan je het inderdaad ook zien. In dit geval bewust gedaan omdat ik geen tijd/zin had het helemaal uit te schrijven en het me ook niet nodig lijkt aangezien dat triviaal is.

[ Voor 35% gewijzigd door F_J_K op 19-11-2007 15:19 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • Mar2zz
  • Registratie: September 2007
  • Laatst online: 20-08-2025
F_J_K schreef op maandag 19 november 2007 @ 15:02:
[...]

Natuurlijk klopt dat niet ;)

[...]
ik vroeg me de hele tijd al af wat er met pseudocode bedoeld werd, maar dan weet ik dat nu :*) een mooi woord om je in te dekken mocht je eens wat code neergooien... >:)

  • ivom
  • Registratie: Januari 2003
  • Laatst online: 24-02 19:33
F_J_K schreef op maandag 19 november 2007 @ 15:02:
[...]

Natuurlijk klopt dat niet ;)

[...]


edit:
Over onderstaande: whehe, zo kan je het inderdaad ook zien. In dit geval bewust gedaan omdat ik geen tijd/zin had het helemaal uit te schrijven en het me ook niet nodig lijkt aangezien dat triviaal is.
Ik snap het idee erachter met deze oplossing. Werkt inderdaad goed, tenzij ik een derde selectie wil gebruiken... Ik vraag me af of het niet simpeler kan ? In mysql kan het wel makkelijk:-).

Verwijderd

ivom schreef op maandag 19 november 2007 @ 16:23:
Ik snap het idee erachter met deze oplossing. Werkt inderdaad goed, tenzij ik een derde selectie wil gebruiken.
hoezo een derde selectie?
verkijk je niet op de eenvoud van een oplossing door in dit geval bv. naar SQL te kijken. wat binnen de ene taal eenvoudig te realiseren is, kan wat moeilijker zijn in een andere. maar de oplossing van onkl is de meest eenvoudige en logische, en enkel qua syntax een beetje verschillend van een equivalente sql-instructie.

  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 18:42
Een derde criterium waarschijnlijk:
=SOM(ALS(EN(A:A>B$10;A:A<B$11;Maand(A:A)=11);1;0))

Nu heb je het aantal datums uit november.

En

=SOM(ALS(EN(A:A>B$10;A:A<B$11;OF(Maand(A:A)<5;Maand(A:A)>8));1;0))

en nu de maanden met een "r" in de naam. Handig voor als je in de vitaminepillenbranche zit. :D

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Voeg aan (A1:An>B10)*(A1:An<B11) nog een derde voorwaarde toe en je bent er. Het is boolean rekenen, en wordt alleen 1 (dus true) als alle voorwaarden 1 zijn, anders 0 want 1*1*1*1*0 = 0. Sommeer die en je bent er. Als ingewikkelder moet, kan je andere (matrix)berekeningen proberen, of hulpkolommen, of VBA, of eventueel "zelfs" afstappen van Excel.

Edit: of zie boven :+

[ Voor 3% gewijzigd door F_J_K op 19-11-2007 16:48 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • ivom
  • Registratie: Januari 2003
  • Laatst online: 24-02 19:33
thanks, met sumproduct lukt het wel.
=SOMPRODUCT((A:A>D1)*(A:A<F1))

Kolom A alle datums.

Veld D1 startdatum
en F1 einddatum

Of inderdaad een derde argument erachter aan.

Of in sql SELECT count(*) FROM table where startdatum>... AND einddatum < ...

Bedankt voor de hulp.
Pagina: 1