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

Modus code werkt niet

Status
Niet open voor verdere reacties.

Chris15

Gebruiker
Lid geworden
23 aug 2016
Berichten
556
Modus code werkt niet:

Ik heb een kolom met samengevoegde getallen. (kolom C)

code in die kolom is:

=ALS(AANTAL(A5:B5)=2;TEKST.SAMENVOEGEN(B5;" ";A5);"")

Nu heb ik in C1 de code gezet:

=MODUS(c3:c999)

Maar die werkt niet terwijl er wel dubbele resultaten zijn in Kolom C.

Moet de Modus code worden aangepast?
 
Door de samenvoeging is het geen getal meer maar tekst.

Matrixformule.
Code:
=MODUS(ALS.FOUT(WAARDE(SUBSTITUEREN(C3:C999;" ";""));""))
 
Matrixformule = Ctrl+Shift+Enter, en niet alleen Enter.
 
Ja, dat werkt! :-)

Ik krijg nu een uitkomst van: 2412

Dat moet eigenlijk zijn 24 12

Is dit in de formule aan te passen?
 
Als het gaat om hele getallen EN je werkt altijd met een decimale komma, dan kun je de matrixformule aanpassen in:
Code:
=SUBSTITUEREN(MODUS(ALS.FOUT(WAARDE(SUBSTITUEREN(C3:C999;" ";","));""))&"";",";" ")
 
Met getallen in kolom A die eindigen op een nul krijg je nog een verkeerde waarde retour.
"10 30" wordt "30 1" in de formule.

Ik heb er derhalve maar een Udf voor geschreven.
Code:
Function F_modus(r As Range) As String
Dim sn, i As Long, a As Long, b As Long
sn = r.Value
For i = 1 To UBound(sn)
   a = Application.CountIf(Range("c3:c999"), sn(i, 1))
    If a > b Then
      b = a
      F_modus = sn(i, 1)
     End If
 Next
End Function

met in een cel:
=F_modus(c3:c399)
 
Dank je Harry,

Die code zet ik achter het blad en de formule gewoon in de cel?
 
Nee, de code behoort in een standaard module.
 
Wat jij wil, als het maar een standaard module is: Menu invoegen → module.
 
Het is gelukt een module toe te voegen en de code te plaatsen, maar de formule in de cel geeft niets aan.....
 
Als je onderstaande in een cel hebt staan en het is het juiste bereik, moet je een resultaat verkrijgen.
=F_modus(c3:c399)
 
Het komt door de lege cellen die je formules genereren.
Ik heb er een "-" tussen geplaatst....
Code:
=ALS(AANTAL(A3:B3)=2;TEKST.SAMENVOEGEN(B3;" ";A3);[COLOR=#ff0000]"-"[/COLOR])
...en de code aangepast.
Code:
Function F_modus(r As Range) As String
Dim sn, sq, i As Long, a As Long, b As Long
sn = r.Value
sq = Filter(Application.Transpose(sn), "-", False)
For i = 1 To UBound(sq)
   a = Application.CountIf(r, sq(i))
    If a > b Then
      b = a
      F_modus = sq(i)
     End If
 Next
End Function
 

Bijlagen

Graag gedaan Chris,

Misschien ziet @MarcelBeug nog een mogelijkheid om de formule aan te passen (je weet maar nooit).
 
Misschien ziet @MarcelBeug nog een mogelijkheid om de formule aan te passen (je weet maar nooit).

Dat wel, maar het wordt wel een draak van een matrixformule:
Code:
=LINKS(SUBSTITUEREN(1+MODUS(ALS.FOUT(1/(1/(WAARDE(SUBSTITUEREN(C3:C999;" ";",")&"1")-1));""));",";" ");LENGTE((1+MODUS(ALS.FOUT(1/(1/(WAARDE(SUBSTITUEREN(C3:C999;" ";",")&"1")-1));""))&""))-1)
In feite:
vervang ik de spaties door komma's,
plak er een "1" achter (om de nullen achter de komma te vangen),
dan kijk ik of 1/(1/(gevonden waarde min 1)) fout gaat (dit is bij lege waarden die 1 opleveren door de aangeplakte 1 en daar wil je vanaf)
als het niet fout gaat dan wordt de 1 er weer bij opgeteld,
dan wordt de modus er op losgelaten
uiteindelijk moet de aangeplakte "1" er weer af: dat gebeurt met LINKS en de lengte van de uitkomst en die wordt weer bepaald door de hele formule nog een keer te doen met LENGTE er omheen.

Misschien kan het wel mooier...
 
Hoi Marcel, ik gebruik nu je laatste code (voor de zekerheid :-))

Is het mogelijk de uitkomst weer in 2 cellen te zetten?

Dus bijvoorbeeld "29 26" naar "29" "26"?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan