¿Cómo hago para que Excel devuelva el valor más frecuente en una celda?

¿Cómo hago para que Excel devuelva el valor más frecuente en una celda?

Tengo una sola celda que contiene una larga lista de números, delimitados por una coma y un espacio.

Algunos de los números se repiten y quiero saber cuál número se repite más.

La función MODO no funciona y parece diseñada para funcionar en un rango donde cada valor está en su propia celda.

Ejemplo de lo que necesito

Cell with numbers
123, 456, 456

Most frequently repeated value
 456

Respuesta1

Si sus valores son números como los que muestra:

=MODE.SNGL(FILTERXML("<a><b>"&SUBSTITUTE(A1,",","</b><b>")&"</b></a>","//b"))

Crea "<a><b>"&SUBSTITUTE(A1,",","</b><b>")&"</b></a>"una cadena xml. Luego FILTERXML(...,"//b")devuelve la matriz de números. Luego MODE.SNGLdevuelve el elemento repetido más grande.

ingrese la descripción de la imagen aquí


Si es texto o una combinación:

=INDEX(FILTERXML("<a><b>"&SUBSTITUTE(A1,",","</b><b>")&"</b></a>","//b"),MODE.SNGL(MATCH(FILTERXML("<a><b>"&SUBSTITUTE(A1,",","</b><b>")&"</b></a>","//b"),FILTERXML("<a><b>"&SUBSTITUTE(A1,",","</b><b>")&"</b></a>","//b"),0)))

Esta vez usamos Match para devolver una matriz de números (donde coincide con la primera coincidencia, en el caso siguiente sería 1,2,2) Luego MODE_SNGLdevuelve 2al ÍNDICE. ingrese la descripción de la imagen aquí

Respuesta2

Pruebe esta breve función definida por el usuario:

Public Function splitt(s As String) As Variant
    Dim mx As Long, i As Long, j As Long, mxkp As Long
    arr = Split(s, ", ")
    mx = 0
    mxkp = 0
    splitt = arr(0)
    For i = 0 To UBound(arr)
        v = arr(i)
        mx = 0
        For j = 1 To UBound(arr)
            If v = arr(j) Then mx = mx + 1
        Next j
        If mx > mxkp Then
            mxkp = mx
            splitt = v
        End If
    Next i
End Function

ingrese la descripción de la imagen aquí

información relacionada