Hace ya varios años atrás publiqué un post mostrando técnicas para extraer números o letras de cadenas alfanuméricas. A pesar del tiempo transcurrido sigo recibiendo consultas, en particular sobre cómo extraer valores numéricos de cadenas de texto. En el post mencionado mostraba como extraer todos los valores numéricos (o todas las letras), pero muchos lectores consultan sobre cómo extraer algún número en particular.
En este post veremos tres funciones UDF (funciones definidas por el usuario) útiles para ese tipo de tareas.
Función para extraer el primer número de una cadena alfanumérica
Esta función tiene un único argumento, la celda que contiene la cadena de texto de donde queremos extraer el número.
Function ext_primer_num(celda As Range)
Dim iX As Integer, resultado As String, temp As String
For iX = 1 To Len(celda)
temp = Mid(celda, iX, 1)
If IsNumeric(temp) Then
resultado = resultado & temp
End If
Next iX
ext_primer_num = CDec(Left(resultado, 1))
End Function
Función para extraer el último número de una cadena alfanumérica
Como la anterior esta función tienen como único argumento la celda que contiene la cadena de texto.
Function ext_ultimo_num(celda As Range)
Dim iX As Integer, resultado As String, temp As String
For iX = 1 To Len(celda)
temp = Mid(celda, iX, 1)
If IsNumeric(temp) Then
resultado = resultado & temp
End If
Next iX
ext_ultimo_num = CDec(Right(resultado, 1))
End Function
Función para extraer un número número de una cadena alfanumérica
Esta función tiene dos argumentos: la celda que contiene la cadena de texto y el número de orden del valor numérico a extraer.
En este ejemplo ponemos en la celda C2 el número de orden buscado (en nuestro caso, el tercer valor numérico en la cadena). En la celda C10 obtenemos el error #¡VALOR! ya que la cadena contiene sólo dos valores numéricos.
Function ext_num(celda As Range, num_orden As Integer)
Dim iX As Integer, resultado As String, temp As String
For iX = 1 To Len(celda)
temp = Mid(celda, iX, 1)
If IsNumeric(temp) Then
resultado = resultado & temp
End If
Next iX
ext_num = CDec(Mid(resultado, num_orden, 1))
End Function
Recordemos que para poder usar estas funciones debemos copiar el código a un módulo común del editor de Vba. Podemos guardarlas en el cuaderno donde queremos usarlas o en el Personal, para que estén disponibles para todos los cuadernos.
No hay comentarios.:
Publicar un comentario
Nota: sólo los miembros de este blog pueden publicar comentarios.