Excel - Ayuda con Macro que cuenta apariciones dentro de un rango de celdas

 
Vista:
sin imagen de perfil
Val: 18
Ha aumentado 1 puesto en Excel (en relación al último mes)
Gráfica de Excel

Ayuda con Macro que cuenta apariciones dentro de un rango de celdas

Publicado por LUIS H (10 intervenciones) el 19/02/2018 06:46:23
Buen día a todos

Tengo la siguiente macro que cuenta apariciones dentro de un rango de celdas, la macro funciona bien, pero cuando son muchos datos, sale un error de desbordamiento, he intentando declarar las variables como dobles pero no consigo solucionar el error, agradezco la ayuda que me puedan brindar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Public Function APARICIONES(Rango As Range, Valor As Variant) As Integer
 
Contador = 0
 
'Recorrer todas las celdas del rango
For Each Celda In Rango.Cells
 
    Posicion = 1
    NuevoStr = Celda.Value
 
    'Mientra la posición encontrada por InStr sea diferente a cero
    Do
        Posicion = InStr(Posicion, NuevoStr, Valor, vbBinaryCompare)
        If (Posicion = 0) Then
            Exit Do
        Else
            'Aumentar contador de apariciones
            Contador = Contador + 1
            'Cadena de texto restante
            NuevoStr = Mid(NuevoStr, Posicion + Len(Valor) + 1)
        End If
    Loop While Posicion <> 0
 
Next
 
APARICIONES = Contador
 
End Function
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 3.964
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Ayuda con Macro que cuenta apariciones dentro de un rango de celdas

Publicado por Antoni Masana (1390 intervenciones) el 19/02/2018 08:12:19
Tienes estos tres tipos de variables para valores grandes:

Long
También almacena números enteros desde -2.147.483.648 hasta 2.147.483.647.

Single
Se suele utiliza para almacenar números fraccionarios periódicos. Abarca desde -3,4028235E+38 a -1,401298E-45 para números negativos y 1,401298E-45 a 3,4028235E+38 para números positivos. Ocupa 4 bytes en memoria.

Double
Similar al anterior pero con mucha más capacidad. Ocupa 8 bytes en memoria y comprende desde -1,79769313486231570E+308 a -4,94065645841246544E-324 para los valores negativos y desde 4,94065645841246544E-324 a 1,79769313486231570E+308 para los valores positivos.

Con un Long deberia de tener suficiente pero si desbordar un Double es que tienes mal la salida del bucle, condición que no se cumple.

Como no se que valores tienes las variables ni que esta buscando solo veo dos opciones o debugas la macro ejecutándola paso a paso y viendo que valores va tomando o subir el libro.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 18
Ha aumentado 1 puesto en Excel (en relación al último mes)
Gráfica de Excel

Ayuda con Macro que cuenta apariciones dentro de un rango de celdas

Publicado por LUIS H (10 intervenciones) el 21/02/2018 06:58:05
Muchas Gracias por esta explicación lo tendre en cuenta para las proximas macros que haga
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con Macro que cuenta apariciones dentro de un rango de celdas

Publicado por JuanC (1237 intervenciones) el 19/02/2018 10:44:53
Contador no aparece declarada por lo que es Variant, el problema es que la función (Function) está devolviendo Integer (As Integer)
cambiala por Long y debería andar...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 3.964
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Ayuda con Macro que cuenta apariciones dentro de un rango de celdas

Publicado por Antoni Masana (1390 intervenciones) el 19/02/2018 12:50:47
Es verdad, no lo había visto, el error le esta dando en la línea 26.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 18
Ha aumentado 1 puesto en Excel (en relación al último mes)
Gráfica de Excel

Ayuda con Macro que cuenta apariciones dentro de un rango de celdas

Publicado por LUIS H (10 intervenciones) el 21/02/2018 06:57:24
Hola Juan

Efectivamente el problema era ese, ya lo cambie a Double y me anda bien

Muchas Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar