Jump to content

Comparar caracteres en dos cadenas de Texto


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

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

Archived

This topic is now archived and is closed to further replies.

  • 58 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Current Donation Goals

    • Raised 0.00 EUR of 130.00 EUR target
  • Files

  • Download Statistics

    • Files
      166
    • Comments
      89
    • Reviews
      25

    Latest File
    By pegones1

    1    0

  • Crear macros Excel

  • Posts

    • Buenos días a todos; -Con la macro que adjunto paso el valor formateado con dos decimales a la celda pero veo que si voy a la barra de fórmulas me siguen apareciendo más de dos decimales.  Hay alguna otra solución? Me interesa que solo sean dos decimales porque después estos datos los paso a Access y  me está cargando todos los decimales. Saludos  Formato.xlsm
    • Hola, tengo una consulta que no se resolver con listas desplegables y sin macros. El caso sería que cuando estemos en la hoja SUBFAMILIA si por ejemplo nos situamos en la fila 3 columna A y desplegamos la lista desplegable y elegimos 0102.BARRAS PERFORADAS, que automáticamente me llene las celdas correspondientes de Campo1, Campo2, Campo3…….. con los datos que se encuentran en la hoja CAMPOS columna C correspondientes a 0102.BARRAS PERFORADAS en este caso son 13 pero pueden llegar hasta 20. En el caso de añadir nuevas subfamilias en esta hoja previa creación de sus campos correspondientes en la hoja Campos tendría que hacer lo mismo, gracias MUESTRA.rar
    • Prueba así: '----------------------------------------- APIS ELIMINAR BARRA TITULO FORMULARIO Private Declare PtrSafe Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare PtrSafe Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Private Declare PtrSafe Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare PtrSafe Function DrawMenuBar Lib "User32" (ByVal hwnd As Long) As Long Private Sub UserForm_Initialize() 'ELIMINAR BARRA TITULO FORMULARIO Dim lStyle As Long, hMenu As Long, mhWndForm As Long mhWndForm = FindWindow("ThunderDFrame", Me.Caption) lStyle = GetWindowLong(mhWndForm, -16) lStyle = lStyle And Not &HC00000 SetWindowLong mhWndForm, -16, lStyle DrawMenuBar mhWndForm '---------------------------------------------------- End Sub  
    • Hola buenas a todos. Hace unos cuantos días estoy intentando trabajar con datos filtrados porque necesito que los datos filtrados en la columna A (No. Pre Factura) quisiera que se concatenaran, he probado varias formas, pero por desconocimiento no he logrado nada, cuando lo intento me concatena todos los datos estén visibles o no. Lo mismo con las columnas G, I, K, M, O, Q (COD1, COD2, COD3, COD4, COD5, COD6) que busco la forma de unir todos los códigos iguales y que me sume sus respectivas cantidades probando con tablas dinámicas, con la función subtotales, pero igual no lo he logrado. Les agradecería si me ayudaran a resolver mi problema. Gracias Dejo aquí el documento mi problema está en la Hoja 2. trabajo.xlsm
    • Sí, sí puedes. Solo selecciona el título en el gráfico y con él seleccionado en la barra pon "=" e indicas la celda a la que quieres hacer referencia.
  • Recently Browsing

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Privacy Policy