Extraer de cadena alfanumérica el número que tiene 5 dígitos

Hola todos!

Tengo en una celda una cadena de varios números y letras del tipo:

1) 450000 MN 657
2) Montolo 87975 988 MTY
3) MN 657 Montolo 81121
4) 657 Hopoolo 81234 56666988

En todas las celdas aparece un número que tiene 5 dígitos, y es el que yo necesito separar. Al no encontrarse en una posición específica no puedo utilizar EXTRAER. La única condición específica es que es un número de 5 dígitos (siempre separado por espacios). Manualmente buscarlo y extraerlo me lleva mucho tiempo (son más de 7mil filas) y quería ver la posibilidad de que una fórmula me ayude!. También existe el caso en que puedan aparecer 2 números de 5 dígitos, en ese caso si me manda un error, o que me de como resultados los dos números, no hay problema, esos los deberé analizar específicamente. Pero que me avise cuando hay más de 2 números de 5 dígitos!

Gracias por su ayuda!

Saludos

1 respuesta

Respuesta
1

Te mando mi solución y estas son las instrucciones:

-Posiciónate en la primera celda de la columna que contiene la cadena de datos. (En el ejemplo sería posicionarnos en la celda que contiene el valor: 450000 MN 657)

-Después de posicionarte en esa celda ejecuta esta macro y te buscará todos los números que 5 dígitos y te los pondrá a la derecha.

Sub ejemplo()
'por luismondelo
columna = ActiveCell.Offset(0, 1).Column
Do While ActiveCell.Value <> ""
fila = ActiveCell.Row
tope = Len(ActiveCell)
For x = 1 To tope + 1
extrae = Mid(ActiveCell, x, 1)
If IsNumeric(extrae) Then
lista = lista & extrae
End If
'++++++++++++++++++++++++++++++++++++
If extrae = " " And Len(lista) = 5 Then
Cells(fila, columna).Value = lista
lista = ""
columna = columna + 1
ElseIf extrae = " " And Len(lista) <> 5 Then
lista = ""
End If
'++++++++++++++++++++++++++++++++++++++
If extrae = "" And Len(lista) = 5 Then
Cells(fila, columna).Value = lista
lista = ""
ElseIf extrae = "" And Len(lista) <> 5 Then
lista = ""
End If
'++++++++++++++++++++++++++++++++++++++
Next
ActiveCell.Offset(1, 0).Select
columna = ActiveCell.Offset(0, 1).Column
Loop
End Sub

no olvides finalizar la consulta

Luego de haber buscado varios días por la web, y sin hallar una solución a mi problema, recurrí a los este foro de expertos. En un par de horas luismondelo me dio una solución excelente que me permitirá realizar una tarea de muchas horas en cuestión de segundos. Muchas Gracias por la solución! Funciona a la perfección!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas