Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Anders (software)

tellen met meerdere criteria in excel

Droopy
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

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