Saltar al contenido

Comparar caracteres en dos cadenas de Texto


Recommended Posts

publicado

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

publicado

@DiegoPCmuchas gracias por tu tiempo y generosidad al responder mi tema.

Me exprese mal ?, son palabras,  comparar nombres.

Funciona Perfecto.

Te envio un Cordial Saludo

Pedro 

publicado

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

 

publicado
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 

publicado

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

 

publicado
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

publicado
Hace 4 minutos , petercien1 dijo:

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

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

publicado
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.

 

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.