Excel macro

Occasional Contributor

Hola, tengo un problema, espero alguien me pueda contribuir, en el trabajo por temas de compatibilidad únicamente manejan la versión 2006 de Office, tengo una fórmula para extraer los valores numéricos y de texto de una cadena, la fórmula funciona bien, pero al tratar de concatenar los valores no me permite con las funciones establecidas, así que hice una función sencilla en VBA para cubrir esa pequeña parte, sin embargo solo me arroja el primer valor de la cadena.

Les dejo la fórmula que yo utilizo para extraer los valores y la función que arme, espero me pueda ayudar o dar alguna opción de lo que puedo ocupar.
Muchas gracias.

Fórmula:


=SI(ESNUMERO(EXTRAE("Celda con la cadena",FILA(INDIRECTO("1:"&LARGO("Celda con la cadena"))),1),*1),EXTRAE("Celda con la cadena",FILA(INDIRECTO("1:"&LARGO("Celda con la cadena"))),1),"")

Macro:

Function ConcatenarCadenas(Rango As Range)
 For Each celda In Rango.Cells
  If celda.Value <> "" Then
   resultado = resultado & celda.Value
  End If
 Next celda 
resultado = Right(resultado) 
ConcatenarCadenas = resultado
End Function

 

3 Replies

@Salvador_2703 

Remove the line

 

resultado = Right(resultado) 
Gracias por el aporte, elimine la línea, pero me sigue marcando el mismo error, el detalle que quizá no mencione es que la fórmula para desglosar la cadena de texto es una matricial, en Office 365 puedo ocupar “Unir cadenas” o “Concat” y me va de maravilla, con la función de arriba buscaba remplazarlos, sin embargo me manda #¡VALOR!

@Salvador_2703 

Try this function. It combines your formula and the VBA function:

Function ExtractNumber(v As String)
    Dim s As String
    Dim i As Long
    For i = 1 To Len(v)
        If IsNumeric(Mid(v, i, 1)) Then
            s = s & Mid(v, i, 1)
        End If
    Next i
    ExtractNumber = Val(s)
End Function

Use like this:

 

=ExtractNumber(A1)

 

S0450.png