[EXCEL] Resultaten filteren tussen bepaalde waardes

Pagina: 1
Acties:

Vraag


  • FijneKerst
  • Registratie: Oktober 2014
  • Laatst online: 17:46
Mijn vraag
Ik zoek een formule / manier om uit een matrix tabel alleen de rijen te filteren die voldoen aan een bepaalde waarde in een kolom.

Het idee is, als dit lukt, om dit om te vormen zodat ik alleen alarmen uit een matrix te zien krijg die in een bepaald tijdsvlak vallen (na werktijden).

Wat ik al gevonden of geprobeerd heb
Onderstaande formule ZOU moeten werken volgens mij (en ChatGPT :) ), maar toch blijft de helft van de resultaten leeg.
De groene getallen zouden rechts te zien moeten zijn, echter zie je dat het tweede deel van de formule niet gepakt wordt.

Afbeeldingslocatie: https://tweakers.net/i/4w8WJI2qe9aQA0aXhBGQyRgeDxg=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/zKqYGkP3YskFVUvVQDXQjlkK.png?f=user_large

Ik heb ook al ipv *OF *EN gebruikt, maar die geeft dan een foutmelding.
Ook heb ik =FILTER gebruikt, maar die doet hetzelfde.
Waar gaat dit fout?

[ Voor 3% gewijzigd door FijneKerst op 13-09-2023 14:18 ]

Mijn eerste Productreview! https://tweakers.net/productreview/243692/creative-sound-blasterx-h7.html

Beste antwoord (via FijneKerst op 14-09-2023 10:17)


  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Typ in F7:
code:
1
=ALS(EN($C7>=$C$3;$C7<=$C$4);B7;"")

- Kopieer deze formule met de vulgreep naar rechts t/m H7
- Kopieer F7:H7 naar beneden t/m F12:H12
- Stel de eigenschappen van F7:F12 in als 'datum, G7:G12 als 'tijd', en H7:H12 als 'standaard'.
Hierbij ben ik ervan uitgegaan dat weergave moet plaatsvinden als de tijden in C7:C12 groter dan of gelijk zijn aan C3 en kleiner dan of gelijk zijn aan C4.

Als het omgekeerd moet zijn, dus weergave als de tijden in C7:C12 kleiner dan of gelijk zijn aan C3, en groter dan of gelijk zijn aan C4, typ dan in F7:
code:
1
=ALS(OF($C7<=$C$3;$C7>=$C$4);B7;"")

en kopieer wederom naar rechts en naar beneden.

[ Voor 50% gewijzigd door dix-neuf op 13-09-2023 15:24 ]

Alle reacties


  • Reinier
  • Registratie: Februari 2000
  • Laatst online: 20:05

Reinier

\o/

Met je in je formules cel C3 en C4 niet vastzetten?

Acties:
  • +1 Henk 'm!

  • Cheesy
  • Registratie: Mei 2006
  • Niet online
Ik zou 'm zo maken:
=ALS(EN(C7>$C$3;C7<$C$4);C7;"")

Even afhankelijk hoe je tijdnotatie is uiteraard, en even zelf tweaken of je "groter" of "groter of gelijk aan" gebruikt.

[ Voor 54% gewijzigd door Cheesy op 13-09-2023 14:28 ]


Acties:
  • +2 Henk 'm!

  • dixet
  • Registratie: Februari 2010
  • Nu online
In je voorbeeld worden 13-9 en 14-9 getoond terwijl het tijdstip daar niet tussen je gevraagde bereik ligt. Klopt dat?

In jouw formule moet je de OF weghalen. Het * teken zorgt er al voor dat de condities worden gecombineerd.

Deze is makkelijker, die hoef je niet door te trekken maar geeft in 1x de hele matrix terug
code:
1
=FILTER(B7:D12;(C7:C12>=C3)*(C7:C12<=C4);"")


zelf even vertalen naar de Nederlandse Excel variant

[ Voor 25% gewijzigd door dixet op 13-09-2023 14:29 ]


Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Typ in F7:
code:
1
=ALS(EN($C7>=$C$3;$C7<=$C$4);B7;"")

- Kopieer deze formule met de vulgreep naar rechts t/m H7
- Kopieer F7:H7 naar beneden t/m F12:H12
- Stel de eigenschappen van F7:F12 in als 'datum, G7:G12 als 'tijd', en H7:H12 als 'standaard'.
Hierbij ben ik ervan uitgegaan dat weergave moet plaatsvinden als de tijden in C7:C12 groter dan of gelijk zijn aan C3 en kleiner dan of gelijk zijn aan C4.

Als het omgekeerd moet zijn, dus weergave als de tijden in C7:C12 kleiner dan of gelijk zijn aan C3, en groter dan of gelijk zijn aan C4, typ dan in F7:
code:
1
=ALS(OF($C7<=$C$3;$C7>=$C$4);B7;"")

en kopieer wederom naar rechts en naar beneden.

[ Voor 50% gewijzigd door dix-neuf op 13-09-2023 15:24 ]


  • FijneKerst
  • Registratie: Oktober 2014
  • Laatst online: 17:46
dixet schreef op woensdag 13 september 2023 @ 14:27:
In je voorbeeld worden 13-9 en 14-9 getoond terwijl het tijdstip daar niet tussen je gevraagde bereik ligt. Klopt dat?

In jouw formule moet je de OF weghalen. Het * teken zorgt er al voor dat de condities worden gecombineerd.

Deze is makkelijker, die hoef je niet door te trekken maar geeft in 1x de hele matrix terug
code:
1
=FILTER(B7:D12;(C7:C12>=C3)*(C7:C12<=C4);"")


zelf even vertalen naar de Nederlandse Excel variant
Het doel in deze is om een resultaat te krijgen waarbij ik in mijn echte data sheet alarmen kan filteren die tussen 18:00 en 06:00 vallen.
Dus het moet een formule zijn die leest als "ik wil alle alarmen zien waarbij de tijd groter is dan 18:00 en kleiner dan 06:00"

Met jouw code kom ik dan op dit, leeg resultaat, terwijl je de rode getallen als resultaat zou verwachten.
DUs of ik denk verkeerd, of excel loopt met me te kutten :P
Afbeeldingslocatie: https://tweakers.net/i/TR7v6xbriftE1CJLtEyQ8fHq9fk=/800x/filters:strip_exif()/f/image/EbQWgXdhGe0KWiNJ6f9Rk7tv.png?f=fotoalbum_large

Mijn eerste Productreview! https://tweakers.net/productreview/243692/creative-sound-blasterx-h7.html


  • FijneKerst
  • Registratie: Oktober 2014
  • Laatst online: 17:46
dix-neuf schreef op woensdag 13 september 2023 @ 14:57:
Typ in F7:
code:
1
=ALS(EN($C7>=$C$3;$C7<=$C$4);B7;"")

- Kopieer deze formule met de vulgreep naar rechts t/m H7
- Kopieer F7:H7 naar beneden t/m F12:H12
- Stel de eigenschappen van F7:F12 in als 'datum, G7:G12 als 'tijd', en H7:H12 als 'standaard'.
Hierbij ben ik ervan uitgegaan dat weergave moet plaatsvinden als de tijden in C7:C12 groter dan of gelijk zijn aan C3 en kleiner dan of gelijk zijn aan C4.

Als het omgekeerd moet zijn, dus weergave als de tijden in C7:C12 kleiner dan of gelijk zijn aan C3, en groter dan of gelijk zijn aan C4, typ dan in F7:
code:
1
=ALS(OF($C7<=$C$3;$C7>=$C$4);B7;"")

en kopieer wederom naar rechts en naar beneden.
toon volledige bericht
Er gebeurd helaas niks ...

Afbeeldingslocatie: https://tweakers.net/i/MRrEED7oFN8DQRmZjb5V9lX7Qak=/800x/filters:strip_exif()/f/image/50nmCNy4TXrAome0GZTn2t6o.png?f=fotoalbum_large

Mijn eerste Productreview! https://tweakers.net/productreview/243692/creative-sound-blasterx-h7.html


  • GRDavies75
  • Registratie: December 2014
  • Laatst online: 15:30

GRDavies75

PSN-id: GRDavies

Ik geloof dat mensen hier vergeten dat
* is het EN-symbool
+ is het OF-symbool

Het kan natuurlijk niet na 18:00 en vroeger dan 6:00 zijn (of wat maar de voorwaarden zijn).

Ik heb het niet geprobeerd, maar de geleverde formule met een +'je zou waarschijnlijk wel moeten werken of de latere formule in het laatste plaatje van EN veranderen in OF.

[ Voor 12% gewijzigd door GRDavies75 op 14-09-2023 08:51 . Reden: extra uitleg ]


  • Microkid
  • Registratie: Augustus 2000
  • Nu online

Microkid

Frontpage Admin / Moderator PW/VA

Smile

Je kan gewoon beter een Filter toevoegen en daar opgeven dat de waarde kleiner moet zijn dan 4.00 of groter dan 10.
Let wel op dat je de tijdsnotatie goed doet. Het lijkt er nu op dat je een getal heb ingevuld i.p.v. een tijd. Een tijd is vaak in de vorm hh:mm:ss.
Afbeeldingslocatie: https://tweakers.net/i/eZAFZ5eJmKu14soQwpX8h4C46nE=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/raR9vlQQt4J5mpvrveW8aY1L.png?f=user_large

[ Voor 34% gewijzigd door Microkid op 14-09-2023 09:00 ]

4800Wp zonnestroom met Enphase
Life's a waste of time. Time's a waste of life. Get wasted all the time and you'll have the time of your life.


  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Dat is toch logisch als je naar jouw laatste ingevoerde tijden kijkt? Als je mijn formules had toegepast op jouw eerste voorbeeld, dan had je de juiste resultaten zien verschijnen.
In je tweede voorbeeld staan tijden waarbij de eerste tijd (in C3) groter is dan die in C4. Dan loopt het tijdvak van vóór 24:00 uur tot na 24:00 . Dan is het toch logisch dat je daar rekening mee moet houden (dus indien nodig in de berekening er 1 dag bij optellen)? Probeer dat eens en als het dan nog niet lukt, meld het dan. Over rekenen met tijden vóór en na 24:00 uur zijn al veel berichten verschenen.
Je tekst in je eerste bericht bracht me in verwarring, want enerzijds schreef je in de titel dat het om tijden tussen twee waarden ging, terwijl de door jou gebruikte formule deed vermoeden dat om tijden voor en na twee ingevoerde tijden ging.

  • FijneKerst
  • Registratie: Oktober 2014
  • Laatst online: 17:46
Dank voor alle hulp.
Ik heb een artikel gevonden dat lijkt te werken.
Wel wat omslachtiger dan gedacht, maar hey, als het werkt dan werkt het.
Rekenen met tijden is inderdaad niet zo simpel als dat ik gehoopt had.

https://stackoverflow.com...-time-intervals-not-dates

Thnx again.

Mijn eerste Productreview! https://tweakers.net/productreview/243692/creative-sound-blasterx-h7.html


  • Cheesy
  • Registratie: Mei 2006
  • Niet online
Ik snap eerlijk gezegd niet echt het probleem. Een tijdnotatie is gewoon een deel van een dag. 12:00 is dus 0,5 en 13:00 is 0,54167.

Afbeeldingslocatie: https://i.ibb.co/C2ygXvn/2023-09-14-11-02-35-Map1-Excel.png

Waarom kun je dit niet gebruiken?

Acties:
  • +1 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
@FijneKerst,
Hieronder een oplossing die ermee rekening houdt dat het tijdvak (ook) vóór en na 24:00 uur kan liggen.
Eenvoudiger denk ik dan die op de website waarnaar je verwijst.
Formule in F7, die je naar rechts en naar beneden kunt kopiëren (let goed op de dollartekens):
code:
1
=ALS($C7+($C7<$C$3)-$C$3<=$C$4+($C$3>=$C$4)-$C$3;B7;"")

Afbeeldingslocatie: https://tweakers.net/i/nFcqIoCVzOOIRdQSUO5C7mVabWY=/full-fit-in/4000x4000/filters:no_upscale():fill(white):gifsicle():strip_exif()/f/image/PFtwun7tHVpIWksiuX4QKrct.gif?f=user_large
'
'

  • FijneKerst
  • Registratie: Oktober 2014
  • Laatst online: 17:46
dix-neuf schreef op donderdag 14 september 2023 @ 11:26:
@FijneKerst,
Hieronder een oplossing die ermee rekening houdt dat het tijdvak (ook) vóór en na 24:00 uur kan liggen.
Eenvoudiger denk ik dan die op de website waarnaar je verwijst.
Formule in F7, die je naar rechts en naar beneden kunt kopiëren (let goed op de dollartekens):
code:
1
=ALS($C7+($C7<$C$3)-$C$3<=$C$4+($C$3>=$C$4)-$C$3;B7;"")

[Afbeelding]
'
'
Hey Thnx.
DIt lijkt idd te werken op een kleine datapool.
Echter heb ik sheets die varieren van 20.000 tot 50.000 regels.
Het moet dus een formule zijn die ik dmv refreshen steeds een andere datapool kan laten bedienen...
Ik kan uiteraard de formule steeds aanpassen... dat is iig een optie.

Thnx :)

Mijn eerste Productreview! https://tweakers.net/productreview/243692/creative-sound-blasterx-h7.html


Acties:
  • +1 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
FijneKerst schreef op donderdag 14 september 2023 @ 11:58:
DIt lijkt idd te werken op een kleine datapool. Echter heb ik sheets die varieren van 20.000 tot 50.000 regels. Het moet dus een formule zijn die ik dmv refreshen steeds een andere datapool kan laten bedienen...
Dat zijn wel veel rijen, maar de formule (en jouw computer) zou dat toch aan moeten kunnen.

  • FijneKerst
  • Registratie: Oktober 2014
  • Laatst online: 17:46
dix-neuf schreef op donderdag 14 september 2023 @ 12:07:
[...]

Dat zijn wel veel rijen, maar de formule (en jouw computer) zou dat toch aan moeten kunnen.
Ja hij kan h et wel aan, maar als ik het zo bekijk zou ik jouw formule moeten over het hele blad moeten kopieren.
Dat is sowieso killing voor de performance.
Daarom leek die =filter functie zo handig, dat is maar 1 formule die over de hele sheet kijkt.

Mijn eerste Productreview! https://tweakers.net/productreview/243692/creative-sound-blasterx-h7.html


Acties:
  • +1 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Ik werk nog met een Excelversie waarin de filterfunctie niet kan worden gebruikt, en over iets wat ik niet kan testen ga ik me niet uitlaten. Je kunt mijn formules overigens wel wat inkorten, omdat je voor de kolommen G en H alleen moet kijken of in de F-kolom wat is verschenen.
Typ in G1:
=ALS($F7<>"";C7;"")
en kopieer naar de H-kolom en naar beneden.

Acties:
  • +1 Henk 'm!

  • dixet
  • Registratie: Februari 2010
  • Nu online
FijneKerst schreef op donderdag 14 september 2023 @ 08:28:
[...]
Het doel in deze is om een resultaat te krijgen waarbij ik in mijn echte data sheet alarmen kan filteren die tussen 18:00 en 06:00 vallen.
Dus het moet een formule zijn die leest als "ik wil alle alarmen zien waarbij de tijd groter is dan 18:00 en kleiner dan 06:00"
Je oorspronkelijke vraag had tijdstippen binnen 1 dag, dus met de starttijd kleiner dan de eindtijd. Als je over middernacht heen wilt gaan moet je rekening gaan houden met eindtijden die kleiner zijn dan de begintijden. Klein detail dat in je OP miste...
Pagina: 1