• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

aantal rijen die aan meerdere voorwaarden voldoen

Status
Niet open voor verdere reacties.

laura297

Nieuwe gebruiker
Lid geworden
25 jan 2007
Berichten
3
Hoi,
Ik wil in dit werkblad het aantal vinden dat aan verschillende criteria moet voldoen.
Het gaat om bepaalde schroeffoutresultaten.
Ik wil vb.het aantal fouten vinden die in kolom A liggen tussen 22:00 en 06:00 en in kolom C overeenstemmen met K06/P01.Dit ook zo voor K01/P01,enz.
Weet iemand raad?
 

Bijlagen

Laatst bewerkt:
Beste Laura,

Welkom op dit forum!
Wat mij gelukt is, is het volgende. In kolom A heb ik "??/??/?? " vervangen door niets zodat alleen de tijden overbleven. Als je dat gedaan hebt, dan kun je ewrken met de functie:
=(SOMPRODUCT(((A2:A265>=0,916666667)+(A2:A265<=0,25))*(C2:C265="K06/P01")))
Korte uitleg.
Excel ziet datums en tijden als getallen met speciale opmaak. Het getal 1 staat voor de 24 uur van een dag. 12 uur 's middags is dan 0,5. Dat betkent ook dat 6 uur 's ochtends gelijk staat aan 0,25 en tien uur 's avonds gelijk aan 0,9166666666.
De functie somproduct kijkt of er per rij aan de voorwaarden voldaan is. Is in kolom A de tijd groter dan 0,9166 of is de tijd kleiner dan 0,25, dan onthoudt de functie een 1. Die 1 wordt vermenigvuldigd met weer een 1 als in kolom C een "K06/P01" staat.
Je krijgt dan 264 maal de berekening:
1*0 = 0
0*1 = 0
0*0 = 0
1*1 = 1
En dat telt íe op. 't Zijn er dus 49.

Groeten,

Richard
 
Mooie formule Richard, en sterker nog, heldere uitleg... ;)

De 0,916666667 zou ik wel in een breuk laten staan: 22/24.

Voor de rest: niets aan toe te voegen.
 
Goed punt, Wigi.

Overigens werkte de functie alleen toen ik de gegevens kopieerde naar een nieuw leeg excelbestand. Ik heb het vermoeden dat het gebruikte bestand aangemaakt wordt door het registratiesysteem, en dat de conversie naar een Excelbestand niet vlekkeloos verloopt. Hebben wij op het werk ook last van.

Richard
 
Hoi Richard,

Nog 2 vraagjes:
-Het vervangen van die datum ,kan dat automatisch?
-Moet ik de formule invoeren als matrix ?

Alvast bedankt.
 
Beste laura,

Het vervangen zou via een macro kunnen:
Sub Verwijder_datums()
Columns("A:A").Select
Selection.Replace What:="??/??/?? ", Replacement:=""
End Sub

Een macro invoegen kan via Alt+F11, dubbelklik links op de naam van het bestand, klik op Invoegen > Module en kopieer bovenstaande macro in het rechter scherm.

De formule hoeft niet als matrix doorgevoerd worden, dus je kunt gewoon eindigen met een enter. Wat wel van belang is, is dat je de haakjes goed zet.
Maar zoals ik al meldde, het werkt pas als ik jouw gegevens kopieer naar een leeg excelbestand. In jouw geuploade bestand werken de formules niet, ook al zet ik de celeigenschappen op standaard. Werken jullie inderdaad met een export uit een ander systeem?

Richard
 
Hoi Richard,

De formule en de macro werken perfect.
Heb nu de formule aangepast om het resultaat te kennen tussen 06:00 en 14:00
maar dit resultaat klopt niet.=(SOMPRODUCT(((A2:A1000>=0,25)+(A2:A1000<=0,583333))*(C2:C1000="K06/P01")))
Kan jij zeggen wat ik heb verkeerd gedaan.
Om op je vraag te antwoorden:dit is inderdaad een export uit een sql-database.(indien deze uitvoeriger was opgemaakt hoefde ik dit niet allemaal te doen:) )
 
Hoi Laura,

Bijna goed. 't Is nogal tricky met somproduct.
Als de tijd tussen 06:00 en 14:00 uur moet liggen dan dient de formule te zijn:
=(SOMPRODUCT(((A2:A1000>=6/24)*(A2:A1000<=14/24))*(C2:C1000="K06/P01")))
De enige wijziging is dat het +-teken nu een * (vermenigvuldiging) is.

Het gaat om het bereik binnen de 24 uur. Moet een tijdstip zowel groter zijn dan 06:00 als kleiner zijn dan 14:00, dan moet je de * gebruiken.
Ik maakte een ander bereik, namelijk groter dan 22:00 uur of kleiner dan 06:00 uur. Dan moet ik de bereiken optellen, dus een +.
De uitleg is niet geheel duidelijk, maar in het tweede geval heb ik twee bereiken, en in het eerste geval één bereik.

Maarre, dit is ook prima te doen in een SQL-statement hoor.

Richard
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan