Función parecida a moda

Existe una función parecida a moda que funcione con texto
2

2 respuestas

Respuesta
1
La función moda te permite seleccionar el término que más se repite en un conjunto de valores, aquí te envío un código hecho para texto, el cual hace lo mismo que la función MODA, espero te sirva, yo lo probé y me funcionó.
------- Código ------>
Dim palabra(1000) As String
Dim a, moda As String
Dim contador(1000) As Integer
Dim mayor As Integer
Sub moda_texto()
limite = 1000
For k = 1 To limite
For m = 1 To limite
a = Cells(k, 2).Value
If a = Cells(m, 2) Then
contador(k) = contador(k) + 1
palabra(k) = Cells(k, 2).Value
End If
Next m
Next k
mayor = contador(1)
For k = 1 To limite
If contador(k) > mayor Then
mayor = contador(k)
moda = palabra(k)
End If
Next k
Cells(3, 3).Value = moda
End Sub
---- Fin -------->
El rango lo puedes modificar de la maera que desees, ya estas familiarizado con esta manera de programar. Saludos amigo, no dudes en escribirme si se te presenta alguna duda.
Respuesta
1
¿Te refieres a la función estadística moda?. Si puedes explicarme un poco mejor lo que deseas hacer...
Aquí hay algo que puede ser lo que quieres.
En un módulo:
Public Function ModaT(ByRef Rango As Excel.Range) As String
Dim Texto As String
Dim Datos As Long
Dim I As Long
Dim Mayor As Long
Dim Cuantos As Long
Datos = WorksheetFunction.CountA(Range(Rango.Address))
Mayor = 0
ModaT = ""
For I = 1 To Datos
Texto = Cells(I, Range(Rango.Address).Column)
Cuantos = WorksheetFunction.CountIf(Range(Rango.Address), Texto)
If Cuantos > Mayor Then
Mayor = Cuantos
ModaT = Texto
ElseIf Cuantos = Mayor Then 'podrias usar la regla de decisión de cual de los 2 textos es más largo cuando ambos tienen igual frecuencia
If Len(Texto) > Len(ModaT) Then
ModaT = Texto
End If
End If
Next I
'Para activarla en la celda escribes la funcion como cualquiera de excel y le pasas un rango como parámetro.
End Function
Ya lo ensayé y funcionó. Si no sirve escribe de nuevo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas