Differenza fra due testi
Info
Esempi
Linguaggio
Librerie
Formule
Ultimi Inseriti

 Login

 Password

Argomenti correlati
Spesso capita di dover verificare se due testi sono uguali o molto simili, il caso classico è per gli indirizzi scritti in modo leggermente diverso da persone diverse. Nel tempo sono stati proposti diversi algoritmi per fare questa verifica uno fra questi è dovuto allo scienziato russo Vladimir Levenshtein, quella riporata qui sotto ne è una leggera variante chiamata distanza di Damerau–Levenshtein.
La funzione calcola la "distanza" fra due parole espressa nel numero minimo di operazioni necessario per passare da un all'altra, come: inserimento, cancellazione, sostituzione di una singola lettera oppure dello scambio di due lettere vicine.
Alcuni esempi aiuteranno a capire il valore assunto dalla funzione nei vari casi:
Testo1Testo2ValoreModifica
Via ManzoniVia Manzon1Cancellazione di una lettera
Via ManzoniVia Manzone1Sostituzione di una lettera
Via ManzoniVia A.Manzoni2Aggiunta di lettere (2)
Via ManzoniVia Maznoni1Inversione di una coppia di lettere

Il codice delle funzione:
Function OSA_Distance(Testo1 As String, Testo2) As Integer
  m = Len(Testo1)
  n = Len(Testo2)
  
  Dim Matrice() As Integer
  ReDim Matrice(0 To m, 0 To n)
 
  For i = 1 To m
    Matrice(i, 0) = i
  Next i
 
  For j = 1 To n
    Matrice(0, j) = j
  Next j
  
  For j = 1 To n
    For i = 1 To m
      If Mid(Testo1, i, 1) = Mid(Testo2, j, 1) Then
        costo = 0
      Else
        costo = 1
      End If

      Matrice(i, j) = Minimo(Matrice(i - 1, j) + 1, _
                    Matrice(i, j - 1) + 1, _
                    Matrice(i - 1, j - 1) + costo)
                    
      If (i > 2 And j > 2) Then
        If (Mid(Testo1, i, 1) = Mid(Testo2, j - 1, 1) And Mid(Testo1, i - 1, 1) = Mid(Testo2, j, 1)) Then
          Matrice(i, j) = Minimo(Matrice(i, j), _
                         Matrice(i - 2, j - 2) + 1)
        End If
      End If
    Next i
  Next j
  
  OSA_Distance = Matrice(m, n)
End Function


L'esempio completo é scaricabile da questo link: Es447.xlsm (a questo link le info per attivare le macro se risultano bloccate)

Gli esempi contenuti nel sito sono per uso personale, non é consentito l'uso professionale, commerciale o la riproduzione senza autorizzazione.
Per dubbi o domande potete scriverci a domande@macrofacili.it, sulla nostra pagina FB MacroFacili.it o sul gruppo FB Excel, macro e formule.
 

data4idea srls - PIva 01881000937 - info@data4idea.it