Helpmij.nl
Helpmij.nl
Helpmij.nl

Quote

Pagina 1 van 3 1 2 3 LaatsteLaatste
Weergeven resultaten 1 tot 20 van 46

Onderwerp: unieke waarden

  1. #1
    Senior Member
    Geregistreerd
    22 december 2019
    Locatie
    Brecht, België
    Vraag is niet opgelost

    unieke waarden

    goede morgen iedereen,

    heeft iemand een oplossing voor
    in C13 een formule voor het aantal unieke waarden in bereik C17:M2063
    in N2065 een formule voor een lijst van de unieke waarden in bereik C17:M2063

    in C2065:M2065 heb ik geprobeerd, maar verder kom ik niet.
    dank bij voorbaat
    Bijgevoegde bestanden Bijgevoegde bestanden

  2. #2
    Mega Senior
    Geregistreerd
    16 maart 2011
    Locatie
    Weert
    Zie https://www.ablebits.com/office-addi...unique-values/ hoofdstuk "Find unique values in multiple columns and concatenate into one cell"
    Kant het zelf niet testen want ik heb oude excel zonder de UNIQUE-functie.
    Laatst aangepast door alphamax : 6 augustus 2022 om 08:43

  3. #3
    Giga Senior JEC.'s avatar
    Geregistreerd
    27 februari 2019
    Bvb
    Code:
    =SOM(N(LENGTE(UNIEK(C17:M2063&""))>1))

    Edit: dezelfde waarden kunnen in meerdere kolommen voorkomen zie ik. Gebruik dan deze

    Code:
    =LET(rng;C17:M2063;r;RIJEN(rng);col;KOLOMMEN(rng);c;REEKS(r*col;1;0);x;INTEGER(c/col)+1;y;REST(c;col)+1;z;INDEX(rng;x;y);AANTALARG(UNIEK(FILTER(z;z<>""))))
    Laatst aangepast door JEC. : 6 augustus 2022 om 09:29
    Gr,
    JV

  4. #4
    Senior Member
    Geregistreerd
    21 juni 2022
    Herstel. Deze functie werkt niet. Ik zoek een nieuwe.
    Code:
    =AANTALARG(UNIEK(C17:M2063))
    Laatst aangepast door HansDouwe : 6 augustus 2022 om 10:30

  5. #5
    Senior Member
    Geregistreerd
    1 juni 2022
    En als je het met VBA wilt doen:
    Code:
    Sub Tel()
        Dim dict
        Set dict = CreateObject("Scripting.Dictionary")
        For r = 17 To 2063
            For k = 3 To 13
                If Cells(r, k) <> vbNullString Then
                    If Not dict.exists(Cells(r, k)) Then dict.Add Cells(r, k), 1
                End If
            Next
        Next
        MsgBox dict.Count
        For Each d In dict
            Debug.Print d(1)
        Next
    End Sub
    Je kunt de inhoud van de dictionary natuurlijk ook op een werkblad plaatsen.

  6. #6
    Giga Senior JEC.'s avatar
    Geregistreerd
    27 februari 2019
    @AHulpje, de .exists kan je weglaten. Alle keys in een dictionary zijn uniek😉

  7. #7
    Mega Honourable Senior Member AlexCEL's avatar
    Geregistreerd
    3 april 2014
    Locatie
    Groningen
    Voor Excel 365 insiders (oranje cellen niet meer nodig):
    Code:
    =LET(x;NAAR.KOLOM(C17:M2063);SORTEREN(UNIEK(FILTER(x;(x>0)*(x<>"");""))))
    Voor het aantal gebruik je AANTALARG in de formule.
    -- een (excel) voorbeeldbestandje zegt meer dan 1000 woorden --

  8. #8
    Senior Member
    Geregistreerd
    21 juni 2022
    Voor Excel 365 of 2021 gebruikers (niet insiders) werkt deze formule (ook geen oranje cellen nodig)

    Code:
    =AANTALARG((UNIEK(XML.FILTEREN("<x><y>"&SUBSTITUEREN(TEKST.COMBINEREN(",";WAAR;C17:M2063);",";"</y><y>")&"</y></x>";"//y");)))
    Resultaat = 215

    Zie cel N2065 in bijgevoegde sheet.
    Bijgevoegde bestanden Bijgevoegde bestanden
    Laatst aangepast door HansDouwe : 6 augustus 2022 om 12:38

  9. #9
    Senior Member
    Geregistreerd
    21 juni 2022
    Voor de insiders heb ik de volgende formule bedacht die zou moeten werken (mits TEXTSPLIT goed naar Nederlands is vertaald):
    Code:
    =AANTALARG(TEKST.SPLISTEN(UNIEK(TEKST.COMBINEREN(",";WAAR;C17:M2063));","))
    In het Engels is het deze:
    Code:
    =COUNTA(TEXTSPLIT(UNIQUE(TEXTJOIN(",";TRUE;C17:M2063));",))
    Als iemand met insiders deze wil testen graag, zelf heb ik geen insiders.

  10. #10
    Giga Senior cow18's avatar
    Geregistreerd
    24 mei 2008
    Locatie
    Alveringem, België
    @AHulpje
    veiligheidhalve zet je nog deze er achter de set erbij om hoofdletterongevoelig te maken
    Code:
    dict.CompareMode = vbTextCompare

  11. #11
    Mega Honourable Senior Member AlexCEL's avatar
    Geregistreerd
    3 april 2014
    Locatie
    Groningen
    @Hans
    Bijna goed vertaald...
    TEKST.SPLISTEN moet zijn TEKST.SPLITSEN

    En deze gaat niet goed, omdat de TEKST.COMBINEREN slechts 1 tekstwaarde oplevert met heel veel komma's erin, geen ARRAY.
    Je zal de functies UNIEK en TEKST.SPLITSEN dus om moeten draaien...
    Laatst aangepast door AlexCEL : 6 augustus 2022 om 12:29
    -- een (excel) voorbeeldbestandje zegt meer dan 1000 woorden --

  12. #12
    Giga Honourable Senior Member
    Verenigingslid
    snb's avatar
    Geregistreerd
    12 juni 2008
    Reduceer de interaktie met een werkblad tot een minimum en gebruik daarom arrays:

    Code:
    Sub M_snb()
      sn=range("C17:M2063")
    
      with CreateObject("Scripting.Dictionary")
        For each it in sn
          x0=.item(it)
        next
    
        cells(1,20).resize(.count)=application.transpose(.keys)
      end with
    End Sub
    of gewoon gebruik maken van de ingebouwde Excel-faciliteiten:

    Code:
    Sub M_snb()
      For Each it In range("C17:M2063").Columns
        it.AdvancedFilter 2, , Cells(Rows.Count, 20).End(xlUp).Offset(1), True
      Next
      
      Columns(20).SpecialCells(2).AdvancedFilter 2, , Cells(1, 22), True
    End Sub
    Laatst aangepast door snb : 6 augustus 2022 om 12:44
    VBA voor smarties
    VBA is een taal die je moet leren met een grammatica- en een woordenboek.

    http://www.helpmij.nl/forum/announcement.php?f=5
    Plaats svp geen bestanden op andere sites; nadat het bestand daar verwijderd is wordt een forumdraad onbegrijpelijk voor anderen.

  13. #13
    Senior Member
    Geregistreerd
    21 juni 2022
    O ja natuurlijk AlexCEL. Dank voor de feedback
    en UNIEK moet ook nog de parameter kolommen meekrijgen, anders haalt hij de dubbele er niet uit.

    Dan kom ik uit op deze (alleen voor insiders!)
    Code:
    =AANTALARG(UNIEK(TEKST.SPLITSEN(TEKST.COMBINEREN(",";WAAR;C17:M2063);",");TRUE))
    Laatst aangepast door HansDouwe : 6 augustus 2022 om 12:51

  14. #14
    Giga Honourable Senior Member
    Geregistreerd
    18 juli 2008
    297 is helaas ook niet het juiste aantal.
    In de debug.print staan velen dubbel in.

    Zo gaat dat wel goed.
    Code:
     dict(Cells(r, k).Value) = Cells(r, k).Value
    ____________
    Met vriendelijke groet,
    Harry

    Lag nooit om de keuzes van dien vraauw, bist ter zulf aine van....
    (Grunnegs-Gronings)

  15. #15
    Senior Member
    Geregistreerd
    21 juni 2022
    Je hebt gelijk HSV. Het juiste aantal is 215.
    Ik heb post #8 gecorrigeerd in deze code (geschikt voor alle EXCEL 365 en 2021 users):
    Code:
    =AANTALARG((UNIEK(XML.FILTEREN("<x><y>"&SUBSTITUEREN(TEKST.COMBINEREN(",";WAAR;C17:M2063);",";"</y><y>")&"</y></x>";"//y");)))
    Resultaat = 215
    Laatst aangepast door HansDouwe : 6 augustus 2022 om 12:57

  16. #16
    Giga Honourable Senior Member
    Geregistreerd
    18 juli 2008
    Voor alle versies.

    Omdat je op voorhand weet dat er lege cellen aanwezig zijn haal je er een vanaf (-1)
    Zeer traag, maar toch.

    Code:
    =SOMPRODUCT(1/(AANTAL.ALS(C17:M2063;C17:M2063&"")))-1
    ____________
    Met vriendelijke groet,
    Harry

    Lag nooit om de keuzes van dien vraauw, bist ter zulf aine van....
    (Grunnegs-Gronings)

  17. #17
    Giga Senior JEC.'s avatar
    Geregistreerd
    27 februari 2019
    Je kunt met de insider versie met VSTACK icm UNIEK direct de juiste waarden vinden.

    Edit: zie dat alex deze al had gebruikt👍
    Laatst aangepast door JEC. : 6 augustus 2022 om 14:45

  18. #18
    Mega Honourable Senior Member AlexCEL's avatar
    Geregistreerd
    3 april 2014
    Locatie
    Groningen
    Met VSTACK/VERT.STAPELEN kun je matrixen op elkaar stapelen i, maar als je het bereik C17:M2063 aangeeft is dit 1 matrix en wordt het NIET gestapeld... Heb het geprobeerd, maar kreeg niet de gewenste resultaten. Als je elke kolom separaat meegeeft als matrix dan lukt het wel. Maar om dat voor 10 kolommen te doen...

    NAAR.KOLOM geeft wel meteen het gewenste resultaat.
    Dan zit je nog wel met het uitfilteren van lege rijen en de 0-waarden, dus ook nog een FILTER nodig.
    Daarna kan je met UNIEK werken de resultaten eventueel sorteren.
    -- een (excel) voorbeeldbestandje zegt meer dan 1000 woorden --

  19. #19
    Giga Honourable Senior Member
    Verenigingslid
    snb's avatar
    Geregistreerd
    12 juni 2008
    VBA:
    Code:
    Sub M_snb()
      sn = range("C17:M2063")
      
      For Each it In sn
        c00 = Replace(c00 & " ", " " & it & " ", " ") & " " & it
      Next
      sn = Split(Application.Trim(c00))
      
      Cells(1, 20).Resize(UBound(sn)) = Application.Transpose(sn)
    End Sub
    VBA voor smarties
    VBA is een taal die je moet leren met een grammatica- en een woordenboek.

    http://www.helpmij.nl/forum/announcement.php?f=5
    Plaats svp geen bestanden op andere sites; nadat het bestand daar verwijderd is wordt een forumdraad onbegrijpelijk voor anderen.

  20. #20
    Giga Senior JEC.'s avatar
    Geregistreerd
    27 februari 2019
    Ik bedoelde dus naar.kolom
    Zelf heb ik de functies nog niet😬

Berichtenregels

  • U mag geen nieuwe vragen starten.
  • U mag niet reageren op berichten.
  • U mag geen bijlagen versturen.
  • U mag uw berichten niet bewerken.
  •  
Helpmij.nl
Helpmij.nl

Helpmij.nl en business

Partners
Sponsoren