Combinatie
Dubbele factuurnummers in twee exports
Zet twee maandelijkse inkoopexports onder elkaar en bewaar elk factuurnummer dat vaker dan één keer voorkomt, met VERT.STAPELEN, UNIEK, X.VERGELIJKEN, ISNB en FILTER.
Gebruikte functies:VERT.STAPELENUNIEKFILTERX.VERGELIJKENISNBExcel 2024 of nieuwer (Deze combinatie vereist Excel 2024 of nieuwer)
Uitgewerkt voorbeeld
Factuurnummers die vaker dan één keer voorkomen in de exports van januari en februari
Situatie
Bij je werkzaamheden op de inkoopcyclus van Veldhuis Installatie BV kreeg je de inkoopfactuurnummers van januari en februari als twee aparte exports. Je wilt één lijst van elk factuurnummer dat in beide maanden samen vaker dan één keer voorkomt, zodat je kunt nagaan of een factuur dubbel is geboekt.
De gegevens
| Rij | A | B | C | D | E |
|---|---|---|---|---|---|
| 1 | Januari | Februari | |||
| 2 | 25-0412 | 25-0420 | 25-0420=FILTER(VERT.STAPELEN(A2:A7, B2:B7), ISNB(X.VERGELIJKEN(VERT.STAPELEN(A2:A7, B2:B7), UNIEK(VERT.STAPELEN(A2:A7, B2:B7), , WAAR))), "Geen dubbelen")=FILTER(VERT.STAPELEN(A2:A7; B2:B7); ISNB(X.VERGELIJKEN(VERT.STAPELEN(A2:A7; B2:B7); UNIEK(VERT.STAPELEN(A2:A7; B2:B7); ; WAAR))); "Geen dubbelen") | ||
| 3 | 25-0415 | 25-0446 | 25-0433 | ||
| 4 | 25-0420 | 25-0433 | 25-0420 | ||
| 5 | 25-0433 | 25-0452 | 25-0433 | ||
| 6 | 25-0437 | 25-0420 | 25-0420 | ||
| 7 | 25-0441 | 25-0458 | |||
| 8 |
Veeg opzij om alle kolommen te zien
Formule in D2
=FILTER(VERT.STAPELEN(A2:A7,B2:B7), ISNB(X.VERGELIJKEN(VERT.STAPELEN(A2:A7, B2:B7), UNIEK(VERT.STAPELEN(A2:A7, B2:B7), , WAAR))), "Geen dubbelen")
=FILTER(VERT.STAPELEN(A2:A7;B2:B7); ISNB(X.VERGELIJKEN(VERT.STAPELEN(A2:A7; B2:B7); UNIEK(VERT.STAPELEN(A2:A7; B2:B7); ; WAAR))); "Geen dubbelen")
Resultaat: 25-0420 / 25-0433 / 25-0420 / 25-0433 / 25-042025-0420 / 25-0433 / 25-0420 / 25-0433 / 25-0420
Hoe de onderdelen samenwerken
Let op: Factuurnummers die alleen verschillen door een spatie aan het eind, of doordat het ene tekst en het andere een getal is, tellen als verschillend, waardoor een echt duplicaat ontsnapt. Maak de exports eerst schoon met SPATIES.WISSEN als ze uit verschillende systemen komen.
De formule uit elkaar gehaald, van binnen naar buiten. Je kunt elk onderdeel in een eigen cel typen om te zien wat het teruggeeft.
=VERT.STAPELEN(A2:A7,
B2:B7) =VERT.STAPELEN(A2:A7;
B2:B7) VERT.STAPELEN VSTACKStapelt bereiken onder elkaar.Lees meer over VERT.STAPELENDruk op Escape om te sluitenmatrix1Het eerste bereik of de eerste matrix: die komt bovenaan het resultaat.Kolom Januari, 6 cellenDruk op Escape om te sluitenmatrix2 (optioneel)Verdere bereiken of matrices, elk onder de vorige geplaatst.Kolom Februari, 6 cellenDruk op Escape om te sluitenZet de januari-export boven de februari-export: één kolom van 12 factuurnummers, van
25-0412tot25-0458. Er is nog niets verwijderd;25-0420komt drie keer voor en25-0433twee keer.=UNIEK(VERT.STAPELEN(A2:A7,
B2:B7), , WAAR) =UNIEK(VERT.STAPELEN(A2:A7;
B2:B7); ; WAAR) VERT.STAPELEN VSTACKStapelt bereiken onder elkaar.Hier gebruikt als: matrixDe waarden waaruit dubbele weg moeten; bij meerdere kolommen telt de hele rij.Lees meer over VERT.STAPELENDruk op Escape om te sluitenmatrix1Het eerste bereik of de eerste matrix: die komt bovenaan het resultaat.Kolom Januari, 6 cellenDruk op Escape om te sluitenmatrix2 (optioneel)Verdere bereiken of matrices, elk onder de vorige geplaatst.Kolom Februari, 6 cellenDruk op Escape om te sluitenexact_eenmaal (optioneel)WAAR houdt alleen waarden die één keer voorkomen; anders één van elk.Logische waardeDruk op Escape om te sluitenMet het derde argument WAAR geeft UNIEK alleen de waarden die precies één keer voorkomen.
Van de 12 nummers vallen
25-0420(3 keer) en25-0433(2 keer) af, dus er blijven er 7 over:25-0412,25-0415,25-0437,25-0441,25-0446,25-0452en25-0458.=X.VERGELIJKEN(VERT.STAPELEN(A2:A7,
B2:B7), UNIEK(VERT.STAPELEN(A2:A7, B2:B7), , WAAR)) =X.VERGELIJKEN(VERT.STAPELEN(A2:A7;
B2:B7); UNIEK(VERT.STAPELEN(A2:A7; B2:B7); ; WAAR)) X.VERGELIJKEN XMATCHGeeft de positie van een waarde in een bereik terug.Lees meer over X.VERGELIJKENDruk op Escape om te sluitenVERT.STAPELEN VSTACKStapelt bereiken onder elkaar.Hier gebruikt als: zoekwaardeDe waarde waarvan je de positie wilt weten.Lees meer over VERT.STAPELENDruk op Escape om te sluitenmatrix1Het eerste bereik of de eerste matrix: die komt bovenaan het resultaat.Kolom Januari, 6 cellenDruk op Escape om te sluitenmatrix2 (optioneel)Verdere bereiken of matrices, elk onder de vorige geplaatst.Kolom Februari, 6 cellenDruk op Escape om te sluitenUNIEK UNIQUEGeeft de unieke waarden van een bereik.Hier gebruikt als: zoeken_matrixDe rij of kolom waarin gezocht wordt. Posities tellen vanaf de eerste cel.Lees meer over UNIEKDruk op Escape om te sluitenVERT.STAPELEN VSTACKStapelt bereiken onder elkaar.Hier gebruikt als: matrixDe waarden waaruit dubbele weg moeten; bij meerdere kolommen telt de hele rij.Lees meer over VERT.STAPELENDruk op Escape om te sluitenmatrix1Het eerste bereik of de eerste matrix: die komt bovenaan het resultaat.Kolom Januari, 6 cellenDruk op Escape om te sluitenmatrix2 (optioneel)Verdere bereiken of matrices, elk onder de vorige geplaatst.Kolom Februari, 6 cellenDruk op Escape om te sluitenexact_eenmaal (optioneel)WAAR houdt alleen waarden die één keer voorkomen; anders één van elk.Logische waardeDruk op Escape om te sluitenZoekt elk van de 12 gestapelde nummers op in de lijst van 7. Een nummer dat één keer voorkomt krijgt zijn positie (1, 2, 3, ...); een herhaald nummer staat niet in de lijst en geeft #N/B. Het resultaat is 1, 2, #N/B, #N/B, 3, 4, #N/B, 5, #N/B, 6, #N/B, 7.
=ISNB(X.VERGELIJKEN(VERT.STAPELEN(A2:A7,
B2:B7), UNIEK(VERT.STAPELEN(A2:A7, B2:B7), , WAAR))) =ISNB(X.VERGELIJKEN(VERT.STAPELEN(A2:A7;
B2:B7); UNIEK(VERT.STAPELEN(A2:A7; B2:B7); ; WAAR))) ISNB ISNAWAAR als een waarde #N/B is.Druk op Escape om te sluitenX.VERGELIJKEN XMATCHGeeft de positie van een waarde in een bereik terug.Hier gebruikt als: waardeDe waarde of cel die wordt getest.Lees meer over X.VERGELIJKENDruk op Escape om te sluitenVERT.STAPELEN VSTACKStapelt bereiken onder elkaar.Hier gebruikt als: zoekwaardeDe waarde waarvan je de positie wilt weten.Lees meer over VERT.STAPELENDruk op Escape om te sluitenmatrix1Het eerste bereik of de eerste matrix: die komt bovenaan het resultaat.Kolom Januari, 6 cellenDruk op Escape om te sluitenmatrix2 (optioneel)Verdere bereiken of matrices, elk onder de vorige geplaatst.Kolom Februari, 6 cellenDruk op Escape om te sluitenUNIEK UNIQUEGeeft de unieke waarden van een bereik.Hier gebruikt als: zoeken_matrixDe rij of kolom waarin gezocht wordt. Posities tellen vanaf de eerste cel.Lees meer over UNIEKDruk op Escape om te sluitenVERT.STAPELEN VSTACKStapelt bereiken onder elkaar.Hier gebruikt als: matrixDe waarden waaruit dubbele weg moeten; bij meerdere kolommen telt de hele rij.Lees meer over VERT.STAPELENDruk op Escape om te sluitenmatrix1Het eerste bereik of de eerste matrix: die komt bovenaan het resultaat.Kolom Januari, 6 cellenDruk op Escape om te sluitenmatrix2 (optioneel)Verdere bereiken of matrices, elk onder de vorige geplaatst.Kolom Februari, 6 cellenDruk op Escape om te sluitenexact_eenmaal (optioneel)WAAR houdt alleen waarden die één keer voorkomen; anders één van elk.Logische waardeDruk op Escape om te sluitenMaakt van elke #N/B WAAR en van elke positie ONWAAR: ONWAAR, ONWAAR, WAAR, WAAR, ONWAAR, ONWAAR, WAAR, ONWAAR, WAAR, ONWAAR, WAAR, ONWAAR.
De WAAR-waarden staan op plek 3, 4, 7, 9 en 11, de herhaalde facturen.
=FILTER(VERT.STAPELEN(A2:A7,
B2:B7), ISNB(X.VERGELIJKEN(VERT.STAPELEN(A2:A7, B2:B7), UNIEK(VERT.STAPELEN(A2:A7, B2:B7), , WAAR))), "Geen dubbelen") =FILTER(VERT.STAPELEN(A2:A7;
B2:B7); ISNB(X.VERGELIJKEN(VERT.STAPELEN(A2:A7; B2:B7); UNIEK(VERT.STAPELEN(A2:A7; B2:B7); ; WAAR))); "Geen dubbelen") FILTERGeeft elke rij van een bereik die aan een voorwaarde voldoet.Lees meer over FILTERDruk op Escape om te sluitenVERT.STAPELEN VSTACKStapelt bereiken onder elkaar.Hier gebruikt als: matrixDe rijen die je terug wilt: één kolom of een hele tabel.Lees meer over VERT.STAPELENDruk op Escape om te sluitenmatrix1Het eerste bereik of de eerste matrix: die komt bovenaan het resultaat.Kolom Januari, 6 cellenDruk op Escape om te sluitenmatrix2 (optioneel)Verdere bereiken of matrices, elk onder de vorige geplaatst.Kolom Februari, 6 cellenDruk op Escape om te sluitenISNB ISNAWAAR als een waarde #N/B is.Hier gebruikt als: opnemenEen WAAR/ONWAAR per rij, even hoog als matrix (even breed voor kolommen): wat blijft.Druk op Escape om te sluitenX.VERGELIJKEN XMATCHGeeft de positie van een waarde in een bereik terug.Hier gebruikt als: waardeDe waarde of cel die wordt getest.Lees meer over X.VERGELIJKENDruk op Escape om te sluitenVERT.STAPELEN VSTACKStapelt bereiken onder elkaar.Hier gebruikt als: zoekwaardeDe waarde waarvan je de positie wilt weten.Lees meer over VERT.STAPELENDruk op Escape om te sluitenmatrix1Het eerste bereik of de eerste matrix: die komt bovenaan het resultaat.Kolom Januari, 6 cellenDruk op Escape om te sluitenmatrix2 (optioneel)Verdere bereiken of matrices, elk onder de vorige geplaatst.Kolom Februari, 6 cellenDruk op Escape om te sluitenUNIEK UNIQUEGeeft de unieke waarden van een bereik.Hier gebruikt als: zoeken_matrixDe rij of kolom waarin gezocht wordt. Posities tellen vanaf de eerste cel.Lees meer over UNIEKDruk op Escape om te sluitenVERT.STAPELEN VSTACKStapelt bereiken onder elkaar.Hier gebruikt als: matrixDe waarden waaruit dubbele weg moeten; bij meerdere kolommen telt de hele rij.Lees meer over VERT.STAPELENDruk op Escape om te sluitenmatrix1Het eerste bereik of de eerste matrix: die komt bovenaan het resultaat.Kolom Januari, 6 cellenDruk op Escape om te sluitenmatrix2 (optioneel)Verdere bereiken of matrices, elk onder de vorige geplaatst.Kolom Februari, 6 cellenDruk op Escape om te sluitenexact_eenmaal (optioneel)WAAR houdt alleen waarden die één keer voorkomen; anders één van elk.Logische waardeDruk op Escape om te sluitenals_leeg (optioneel)Wat je ziet als geen rij voldoet; zonder dit krijg je #BEREKENEN!.Druk op Escape om te sluitenFILTER bewaart de gestapelde nummers op de WAAR-plekken:
25-0420,25-0433,25-0420,25-0433,25-0420. Dat zijn 5 rijen, één voor elke keer dat een herhaalde factuur voorkomt. Komt niets dubbel voor, dan toont de cel de tekst voor geen dubbelen.
Stap voor stap
- VERT.STAPELEN(A2:A7; B2:B7) zet februari onder januari: 6 + 6 = 12 nummers. Plek 1 tot en met 6 zijn
25-0412,25-0415,25-0420,25-0433,25-0437,25-0441; plek 7 tot en met 12 zijn25-0420,25-0446,25-0433,25-0452,25-0420,25-0458. - Het aantal keren dat elk nummer voorkomt:
25-0420staat op plek 3, 7 en 11 (3 keer),25-0433op plek 4 en 9 (2 keer) en de andere 7 nummers elk één keer. Controle: 3 + 2 + 7 = 12. - UNIEK(...; ; WAAR) bewaart alleen de nummers die precies één keer voorkomen:
25-0412,25-0415,25-0437,25-0441,25-0446,25-0452,25-0458. Dat zijn 7 nummers. - X.VERGELIJKEN zoekt alle 12 gestapelde nummers op in die 7: 1, 2, #N/B, #N/B, 3, 4, #N/B, 5, #N/B, 6, #N/B, 7. De herhaalde nummers staan niet in de lijst en geven daarom #N/B.
- ISNB maakt daarvan ONWAAR, ONWAAR, WAAR, WAAR, ONWAAR, ONWAAR, WAAR, ONWAAR, WAAR, ONWAAR, WAAR, ONWAAR. WAAR markeert plek 3, 4, 7, 9 en 11.
- FILTER geeft de gestapelde nummers op die plekken terug:
25-0420,25-0433,25-0420,25-0433,25-0420. De lijst loopt vanafD2door totD6, 5 rijen.
Waarom het werkt
UNIEK met het derde argument WAAR geeft de nummers die in orde zijn, de nummers die één keer voorkomen. Alles in de stapel wat niet in die lijst staat, komt vaker dan één keer voor, en X.VERGELIJKEN met ISNB maakt van die vraag per rij WAAR of ONWAAR. FILTER bewaart daarna de rijen met WAAR.
Omdat VERT.STAPELEN een matrix geeft en geen bereik, werkt elke stap in één keer op de hele stapel, zonder hulpkolom.
Let op
- AANTAL.ALS kan dit niet op de gestapelde lijst. AANTAL.ALS wil als eerste argument een bereik en VERT.STAPELEN geeft een matrix, dus =AANTAL.ALS(VERT.STAPELEN(A2:A7; B2:B7); A2) geeft een foutmelding. Daarom gebruikt de constructie UNIEK en X.VERGELIJKEN, die wel matrices accepteren.
- Het resultaat toont elke keer dat een herhaalde factuur voorkomt, niet elke factuur één keer:
25-0420staat er drie keer in omdat het drie keer is geëxporteerd. Zet UNIEK rond de formule als je één regel per factuurnummer wilt.
Varianten
=UNIEK(FILTER(VERT.STAPELEN(A2:A7,B2:B7), ISNB(X.VERGELIJKEN(VERT.STAPELEN(A2:A7, B2:B7), UNIEK(VERT.STAPELEN(A2:A7, B2:B7), , WAAR))), "Geen dubbelen"))
=UNIEK(FILTER(VERT.STAPELEN(A2:A7;B2:B7); ISNB(X.VERGELIJKEN(VERT.STAPELEN(A2:A7; B2:B7); UNIEK(VERT.STAPELEN(A2:A7; B2:B7); ; WAAR))); "Geen dubbelen"))
UNIEK om de hele formule: één regel per herhaalde factuur, dus 25-0420 en 25-0433 (2 rijen in plaats van 5).
=FILTER(A2:A7,AANTAL.ALS(A2:B7, A2:A7) > 1, "Geen dubbelen")
=FILTER(A2:A7;AANTAL.ALS(A2:B7; A2:A7) > 1; "Geen dubbelen")
De oudere aanpak met AANTAL.ALS op het echte bereik A2:B7, zonder VERT.STAPELEN. Het telt elk januarinummer in beide kolommen (25-0420 geeft 3, 25-0433 geeft 2, de rest 1) en geeft 25-0420 en 25-0433 terug. Het toont alleen de januarikant en vraagt dat de gegevens in één blok cellen staan.
Verwante combinaties
Gebruikte functies
- VERT.STAPELENZet bereiken of matrices onder elkaar in één overlopend blok, zodat losse exports één lijst worden die je kunt sorteren, filteren of ontdubbelen.
- UNIEKZet elke waarde uit een bereik één keer onder elkaar, in de volgorde waarin ze voor het eerst voorkomt, als overlopende lijst die de bron volgt.
- FILTERHaalt alle rijen uit een bereik die aan je voorwaarde voldoen, als lijst die naar de cellen eronder overloopt en zich aanpast zodra de gegevens veranderen.
- X.VERGELIJKENZoekt een waarde in een rij of kolom en vertelt met een getal op welke positie die staat, eventueel bij benadering, met jokertekens, met een reguliere expressie of vanaf het eind gezocht.
Gebruikte functies
- VERT.STAPELENZet bereiken of matrices onder elkaar in één overlopend blok, zodat losse exports één lijst worden die je kunt sorteren, filteren of ontdubbelen.
- UNIEKZet elke waarde uit een bereik één keer onder elkaar, in de volgorde waarin ze voor het eerst voorkomt, als overlopende lijst die de bron volgt.
- FILTERHaalt alle rijen uit een bereik die aan je voorwaarde voldoen, als lijst die naar de cellen eronder overloopt en zich aanpast zodra de gegevens veranderen.
- X.VERGELIJKENZoekt een waarde in een rij of kolom en vertelt met een getal op welke positie die staat, eventueel bij benadering, met jokertekens, met een reguliere expressie of vanaf het eind gezocht.