• 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.

Tellen met 'uniek' als voorwaarde

Status
Niet open voor verdere reacties.

NogGeenGuru

Gebruiker
Lid geworden
5 aug 2015
Berichten
130
Beste forumleden,

Ik heb een tabel waarin ik records wil tellen op basis van voorwaarden.
normaal gesproken geen probleem maar één van de voorwaarden is dat de combinatie Postcode+huisnummer uniek moet zijn.
als dit niet zo is dan mogen alleen de waardes van het bovenste record geteld worden.

De tabel bestaat uit:
CodeNR, PlaatsNR, NR, Test1, Test2, PostcodeHuisNR, Lengte

daarnaast heb ik een tabel met de unieke combinaties voor CodeNR, PlaatsNR.

van die combinaties wil ik:
-het aantal unieke waardes voor PostCodeHuisNR tellen, waarvan de lengte > 59
-Het aantal waardes uit Test1 dat groter is dan 0 EN een lengte > 59 heeft EN een uniek PostcodeHuisNR heeft
-Het aantal waardes uit Test2 dat groter is dan 0 EN een lengte > 59 heeft EN een uniek PostcodeHuisNR heeft

Ik was al een eindje op weg maar het toevoegen van de unieke PostcodeHuisNR conditie is mij niet gelukt.
Heeft iemand hier een oplossing voor?:eek:

bijgevoegd ook een voorbeeld bestand om te tabellen wat sprekender te maken.
 

Bijlagen

  • Tellen obv Uniek.xlsx
    353,8 KB · Weergaven: 56
Oplossing met SQL

Best NogGeenGuru,

Dit zijn lastige vragen waar Excel geen antwoorden op heeft, in een database zou je deze vragen met een
SQL statement (betrekkelijk) eenvoudig kunnen beantwoorden.
Ik heb voor je een mogelijkheid gemaakt om met behulp van SQL vragen aan een Excel tabel te kunnen stellen
Hiervoor heb je wel wat SQL en VBA kennis nodig.

Bij het starten van de macro wordt het antwoord op Blad2 gezet.

In de macro zie je de SQL's die ik gemaakt heb om je vragen te beantwoorden.

Bekijk bijlage Tellen obv Uniek (Els).xlsm


Veel Succes
 
Ik heb het opgelost met 3 Hulp kolommen met SUMPRODUCT() formules.
Daaroverheen in kolommen N, O, P ook SUMPRODUCT() formules.
 

Bijlagen

  • Tellen obv Uniek(pcb).xlsx
    436,5 KB · Weergaven: 39
Hierbij mijn voorstel, één SOMPRODUCT formule (voor test1) en geen hulpkolommen/SQL/VBA benodigd:
Code:
=SOMPRODUCT(($G$2:$G$8302>59)*($D$2:$D$8302>0)*ALS.FOUT(1/AANTALLEN.ALS($D$2:$D$8302;">0";$F$2:$F$8302;$F$2:$F$8302);0))
Test2 lukt dan zelf wel denk ik (verwijzingen aanpassen).

Let op: invoeren als matrixfunctie, d.w.z. afsluiten met Control+Shift+Enter.
 
Laatst bewerkt:
Als je zou vertellen waarvoor deze exercitie dient, is er wellicht een voor-de-hand-liggender-aanpak te bedenken (draaitabel, dictionary, etc.)
 
Heb je de invoegtoepassing Power Pivot geïnstalleerd. Dan kun je een draaitabel maken waarbij de unieke combinaties worden geteld. Ik kom op 2437 combinaties (er zat één lege rij tussen)
Je kunt ook de complete tabel van de unieke adressen genereren.

P.S. Je kunt hetzelfde bereiken met Power Query.
 
Laatst bewerkt:
Bedankt voor de hulp allemaal!

De formule van AlexCEL werkt perfect en is precies wat ik zocht.

De methode van Elsendoorn2134 vind ik echt geweldig. Ik wist ook helemaal niet dat ik mijn Excel document kan benoemen tot database connectie.
Echt fantastisch!
 
Nog makkelijker (het makkelijkst):
Kolom selecteren, onder tabblad gegevens: filteren, geavanceerd, kopieren naar andere locatie, unieke waarden aanvinken.
Je krijgt dan een lijst met alle unieke adressen.
 
@Elsendoorn


Petje af :thumb:

VBA kan iets korter:

Code:
With CreateObject("ADODB.recordset")
    .Open "SELECT Code, PlaatsNR , SUM(Test10), SUM(Test20) FROM (SELECT Code, PlaatsNR, IIF(Test1>0,1,0) AS Test10, IIF(Test2>0,1,0) AS Test20 FROM [Blad1$]) GROUP BY Code, PlaatsNr;", "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0 XML"""
    Blad2.Cells(1).CopyFromRecordset .DataSource
End With
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan