............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

Comparar Cadenas

Ver el tema anterior Ver el tema siguiente Ir abajo

Comparar Cadenas

Mensaje por melilla el Dom Mar 29, 2009 6:08 am

Gracias por vuestro tiempo y una contestación.

He buscado en este foro y aunque encontré cosas, no eran tan especificas. Estoy seguro que solventa un problema básico para cualquier usuario.

Básicamente se trata de una adaptación a excel para solventar una necesidad.
Necesidad: El contenido de la celda A1, deberá compararse al contenido H1:H1000 y mostrar en J1 el % (tanto por ciento) de coincidencia en la comparación.
He encontrado AQUÍ un código que quiero adaptar a
este fichero

Pego el código tal cual, para evitar molestias.

Código:

Public Function StringCompRatio(ByVal sCad1 As String, ByVal sCad2 As String) As Double
 
  'Preparación previa
  If Len(sCad1) > Len(sCad2) Then
    Dim sAux As String
    sAux = sCad1
    sCad1 = sCad2
    sCad2 = sAux
  End If
  Dim lLong As Long
  lLong = Len(sCad2)
  If lLong = 0 Then
    StringCompRatio = 1
    Exit Function
  End If
  sCad1 = sCad1 + Space(lLong - Len(sCad1))
  'Recorremos las cadenas
  Dim sChar As String * 1
  Dim i As Integer, j As Integer, iPos As Integer, iDist As Integer, iTotDist As Integer
  For i = 1 To lLong
    sChar = Mid(sCad1, i, 1)
    iDist = lLong
    For j = 1 To lLong
      'Si coinciden 2 caracteres vemos la distancia y nos quedamos con la menor
      If sChar = Mid(sCad2, j, 1) And Abs(j - i) < iDist Then
        iDist = Abs(j - i)
        iPos = j
      End If
    Next
    'Eliminamos el caracter para que no se "multicompare"
    'Se cambia por "~", caracter que no debe estar en las cadenas que se comparan
    If iDist < lLong Then sCad2 = Left(sCad2, iPos - 1) & "~" & Mid(sCad2, iPos + 1)
    iTotDist = iTotDist + iDist
  Next
  'La fórmula
  StringCompRatio = 1 - iTotDist / (lLong ^ 2)
 
End Function

¡Gracias una vez más!

melilla

Masculino Cantidad de envíos : 10
Edad : 56
Ciudad - Pais : marruecos
Fecha de inscripción : 24/02/2009

Volver arriba Ir abajo

Re: Comparar Cadenas

Mensaje por GalileoGali el Dom Mar 29, 2009 7:34 pm

No comparto el criterio del algoritmo, pero bueno


_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional

GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Comparar Cadenas

Mensaje por melilla el Dom Mar 29, 2009 8:47 pm

Ante todo Gracias por dedicarme tu tiempo.

Una vez comprobado , devuelve '' #¿NOMBRE? '' . ¿porqué? .... es posible que como en el fichero que linkeé al contener las celdas de la columna ''A'' texto y las celdas de la columna ''H'' hipervínculos , se genere el error.

Con anterioridad había probado =similitud(A2;H12) , con idénticos resultados.

En caso de que el problema se deba a que es un hipervínculo, ¿que habría que poner en lugar de H12 ?

¡Gracias una vez más!

melilla

Masculino Cantidad de envíos : 10
Edad : 56
Ciudad - Pais : marruecos
Fecha de inscripción : 24/02/2009

Volver arriba Ir abajo

Re: Comparar Cadenas

Mensaje por GalileoGali el Dom Mar 29, 2009 9:16 pm

Donde pusiste el codigo de la funcion?
tiene que ir en un Modulo Standard, tal como ocurre en el ejemplo que subi

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional

GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Comparar Cadenas

Mensaje por melilla el Jue Abr 02, 2009 8:48 pm

Estaba en un error. Solucionado
¡gracias!

melilla

Masculino Cantidad de envíos : 10
Edad : 56
Ciudad - Pais : marruecos
Fecha de inscripción : 24/02/2009

Volver arriba Ir abajo

Re: Comparar Cadenas

Mensaje por Contenido patrocinado Hoy a las 11:28 pm


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.