Vraag & Antwoord

Anders (software)

tellen met meerdere criteria in excel

12 antwoorden
  • Ik heb een adressen bestand in excel en ik wil graag dat excel voor mij bijhoudt wat er zoal op te tellen valt. Zo wil ik bijvoorbeeld een kode die in kolom Q staat met de waarde 101 samen laten tellen met een J die in kolom O staat. nu kom ik niet verder als een enkele vergelijk: =AANTAL.ALS(Leden!$Q$2:$Q$1765;"101") hoe krijg ik die 2e erbij zodat de uitkomst aan beide criteria voldoet?
  • Ik snap je vraag niet! Zou je het wat duidelijker kunnen uitleggen? Dan kan ik je misschien wel helpen. Groeten Wouter
  • Oke Wouter. Ik wil dus dat excel iets voor me telt. Het gaat er om dat twee kolommen tegelijkertijd aan een bepaalde voorwaarde moeten voldoen nl in kolom Q moet 101 staan en tegelijk moet er in kolom O een J staan. Als ik het nu wil weten moet ik via filter werken en dan nog zelf tellen (de uitkomst is 34) in kolom Q staat 151 x 101 (zie bovenstaand gebruikte formule) in kolom O staat 746 x "J" maar die zijn niet allemaal van kode 101. Ik hoop dat je het zo wat duidelijker vindt.
  • okay, ik snap het, het beste kan je dan de achterste kolom gebruiken en hier de volgende code typen: =ALS(Q1=101;ALS(O1="j";1;0);0) Dit moet je voor iedere regel doen. Als er aan de twee waardes voldaan wordt, dan wordt er een 1 gegeven, Wordt er niet aan beide voorwaardes voldaan dan wordt er een 0 gegeven. Dan moet je nog alle regels van die kolom optellen en dan heb je het antwoord. Zoals je ziet kan je voor twee voorwaarden gewoon nog een als functie i.p.v. een waarde zetten. Let op, je mag maximaal 7 als functies met elkaar combineren. Groeten, Wouter
  • Dit werkt iig. het is dus niet mogelijk om zo'n telling te doen en de uitkomst daarvan op een ander werkblad te zetten, zonder dat je een kolom gebruikt voor een formule? Dit werkt in zoverre niet dat er 43 kodes zijn in kolom Q. zodat je 43 ! kolommen extra moet gebruiken alleen voor de tellingen in kolom Q. leden op werkblad leden uitkomst op werkblad aantal
  • Je wilt alle 1-en optellen, maar geen extra kolom gebruiken? Dan moet je alle formules in een celdoen, je krijgt dan zoiets al dit: [code:1:2be291f3ef] =ALS(Q1=101;ALS(O1="j";1;0);0)+ALS(Q2=101;ALS(O2="j";1;0);0)+ALS.... [/code:1:2be291f3ef] Let bij lange forumules vooral op het aantal haakjes, eentje te weinig kan verbazingwekkende oplossingen opleveren
  • Nou eigenlijk is het de bedoeling om zover mogenlijk een formule te hebben, die gewoon rekening houdt met gedefinieerde inhoud van 2 kolommen (Q = 101 en O = 'J' ) dus gewoon een optelling rechtstreeks kan maken en die op een ander werkblad het antwoord zet. Zoals je bv =AANTAL.ALS(Leden!$Q$2:$Q$1765;"101") gelijk weet hoeveel keer 101 in kolom Q voorkomt op werkblad Leden. zoiets zou in dBase zijn: use leden count for Q=101 .and. O='J' to 101J use aantal replace reco a aantal101J with 101J. en dat kan voor meedere tellingen in een loop met do while en enddo.
  • Je kan hier ook een macro voor maken, is misschien handiger: [code:1:f910411ef2] Dim Aantal As Integer Dim i As Integer Aantal = 0 i = 1 Do Until Cells(i, 1) = "" 'Herhaal de loop totdat er een cel in kolom a komt die leeg is If Cells(i, 17).Value = 101 And Cells(i, 15).Value = "j" Then 'Als een cel in kolom q waarde 101 heeft en een cel in kolom o een waarde "j" heeft dan: Aantal = Aantal + 1 'deze variabele telt er een bij op en houd de telling bij End If i = i + 1 'zorg dat de volgende regel komt Loop MsgBox Aantal 'laat het aantal waarden zien, jij zou hier een verwijzing naar desbetreffende cel moeten zetten![/code:1:f910411ef2]
  • Combineer de gegevens uit de twee kolommen in een derde [code:1:01a8201053]=Q2&O2[/code:1:01a8201053]kolom(Z); zoek in de gecombineerde kolom met [code:1:01a8201053]=AANTAL.ALS(Z2:Z1765;"101J")[/code:1:01a8201053]
  • Dat werkt prima. Ik heb echter nog 2 vragen. 1. hoe plaats ik de telling aantal in het werkblad aantal cel D14? 2. Kan ik op onderstaand manier voor alle 43 kodes de macro laten ineen keer laten lopen? of moet ik er dan 43 maken? Aantal101 = 0 Aantal102 = 0 etc. i = 1 Do Until Cells(i, 1) = "" If Cells(i, 17).Value = 101 And Cells(i, 15).Value = "j" Then Aantal101 = Aantal101 + 1 End If If Cells(i, 17).Value = 102 And Cells(i, 15).Value = "j" Then Aantal102 = Aantal102 + 1 End If i = i + 1 Loop Aantal101 in Aantal!D14 Aantal102 in Aantal!D15 etc.
  • FLvan Son, Dat is ook een goede tip, die houd ik in mijn achterhoofd. Ik heb het liefst geen extra kolommen ingebruik voor dit soort dingen, maar als de macro te lastig wordt zal ik het zeker doen.
  • Antwoord op vraag 1: Cells(14, 4).Value = Aantal101 Hierbij staat 14 voor de rij (rij 14) en 4 voor de kolom (kolom D) .Value betekent dat je de cel een waarde wilt geven. Deze waarde is gelijk aan het getal opgeslagen in variabele Aantal101 Antwoord op vraag 2: Om te contoleren voor de overige codes kan je er gewoon een if ... ... then bijschrijven, zoals je al voor deed. Je hoeft dus niet de loop 43x over te schrijven. Als er maar 1 bewerking achter de if... ... then functie komt mag je de end if weglaten. Scheelt weer typwerk. Als de codes oplopend zijn (101, 102, 103, 104, 105, enz...) i.p.v. willekeurig dan kan je beter een array hiervoor gebruiken. Zoals hieronder staat. [code:1:db7cd08044]Dim Aantal(43) As Integer Dim i As Integer Dim j As Byte for j = 1 to 43 Aantal(j) = 0 next j i = 1 Do Until Cells(i, 1) = "" for j = 1 to 43 If Cells(i, 17).Value = 100 + j And Cells(i, 15).Value = "j" Then Aantal(j) = Aantal(j) + 1 End If next j i = i + 1 Loop Cells(14,4).Value = Aantal(1) Cells(15,4).Value = Aantal(2) 'enz... tot aantal(43)[/code:1:db7cd08044] Groeten, Wouter

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.