Function Soundex (ByVal sText)
Dim sOrd As String
Dim sNummer As String
Dim sSdx As String
Dim sAktuell As String
Dim sFörraAs String
Dim iVarv As Integer
Dim sTecken As Integer
Dim iAscii As Integer
sOrd = UCase(sText) ' bara stora bokstäver
sNummer = "01230120022455012623010202" '
SOUNDEX tabell
'
se till att ni skriver in den rätt!!!!
' Egentligen säger SOUNDEX algoritmen att det skall
' vara som nedan
' sSdx = Left(sOrd, 1) ' Starta med första
tecknet
' For iVarv = 2 To Len(sOrd) ' Loopa igenom
resten av strängen
' ...
' Men om det första tecknet är tex Å fungerar följande
' variant mycket bättre
sSdx = "" ' Starta med ingenting
For iVarv = 1 To Len(sOrd) ' Loopa igenom
strängen
sTecken = Mid(sOrd, iVarv, 1) '
tag ett tecken
' konvertera ASCII värdet till SOUNDEX
tabellenindex
iAscii = Asc(sTecken) - 64
If iAscii >= 1 And iAscii <= 26
Then ' acceptera endast tecken
' slå upp det i SOUNDEX tabellen
sAktuell = Mid(sNummer,
iAscii, 1)
If sAktuell <>
sFörra And sAktuell <> "0" Then
'
om olika och inte specialtecken
sFörra
= sAktuell ' spara förra värdet
sSdx
= sSdx + sAktuell ' bygg upp resultatsträngen
End If
End If
Next Varv
' Se till att vi får fyra tecken totalt.
Soundex = Left(sSdx + "0000", 4)
End Function