Jump to content

Comparar caracteres en dos cadenas de Texto


Go to solution Solved by petercien1,

Recommended Posts

Hola

Podrías hacerlo con una UDF.

En tu celda podrías poner: 

=Compara(A2,B2)

Y la UDF en VBA:

Function Compara(T1 As String, T2 As String) As Boolean
    Compara = True
    Dim Tmp As String
    Tmp = T2
    For X = 1 To Len(T1)
        Pos = InStr(1, Tmp, Mid(T1, X, 1))
        If Pos > 0 Then
            Mid(Tmp, Pos, 1) = "/"
        Else
            Compara = False
            Exit Function
        End If
    Next
End Function

La idea del reemplazo de la letra por "/" es para que no haya problemas si el primer texto tiene, por ejemplo, 5 letras "E" y el segundo texto solo tiene 4 letras "E", si no hiciera el reemplazo la respuesta sería True, gracias al reemplazo la respuesta sería False.

Conste que dijiste "caracteres" y no palabras. Si tu idea hubiese sido con palabras, la solución podría darse con Split y uso de arrays

Link to comment
Share on other sites

Esta función compara palabras y puedes usarla así:  =ComparaNombre(A2;B2)

Function ComparaNombre(A As String, B As String) As Boolean
a1 = Split(A, " ")
b1 = Split(B, " ")
If UBound(a1) = UBound(b1) Then
   For x = 0 To UBound(a1)
      For y = 0 To UBound(b1)
         If UCase(a1(x)) = UCase(b1(y)) Then t = t + 1
      Next
   Next
   If t = UBound(a1) + 1 Then ComparaNombre = True
End If
End Function

 

Link to comment
Share on other sites

  • Solution
Hace 2 horas, Antoni dijo:

Esta función compara palabras y puedes usarla así:  =ComparaNombre(A2;B2)

Function ComparaNombre(A As String, B As String) As Boolean
a1 = Split(A, " ")
b1 = Split(B, " ")
If UBound(a1) = UBound(b1) Then
   For x = 0 To UBound(a1)
      For y = 0 To UBound(b1)
         If UCase(a1(x)) = UCase(b1(y)) Then t = t + 1
      Next
   Next
   If t = UBound(a1) + 1 Then ComparaNombre = True
End If
End Function

 

Muchas Gracias Maestro @Antoni. Excelente como siempre.

 

Un Abrazo a la distancia

Pedro 

Link to comment
Share on other sites

Aunque estamos en macros

Te dejo una solución con formulas versión 365, podrás ver DIVIDIRTEXTO es recién lanzada

=IGUAL(CONCAT(ORDENAR(MINUSC(DIVIDIRTEXTO(A2," ")),,-1,1)),CONCAT(ORDENAR(MINUSC(DIVIDIRTEXTO(B2," ")),,-1,1)))

Puedes además sustituir CONCAT por UNIRCADENAS

 

Link to comment
Share on other sites

Hace 11 horas, Gerson Pineda dijo:

Aunque estamos en macros

Te dejo una solución con formulas versión 365, podrás ver DIVIDIRTEXTO es recién lanzada

=IGUAL(CONCAT(ORDENAR(MINUSC(DIVIDIRTEXTO(A2," ")),,-1,1)),CONCAT(ORDENAR(MINUSC(DIVIDIRTEXTO(B2," ")),,-1,1)))

Puedes además sustituir CONCAT por UNIRCADENAS

 

Hola @Gerson Pineda

Muchas gracias por tu tiempo y ayuda.

No tengo cargada DIVIDIRTEXTO en mi excel. Sera porque es la versión básica?

Saludos  Cordiales

Pedro Venegas Q

Link to comment
Share on other sites

Hace 3 minutos , Gerson Pineda dijo:

Esta en el programa insider, pero tambien ya aparece en el canal actual de la licencia 365

Revisare las actualizaciones del programa y te comento.

Un Abrazo.

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

Privacy Policy