Excel: sostituire i caratteri accentati

Speravo che con l’introduzione di Unicode (il draft proposal è del 1980!) queste cose non fossero più necessarie, e invece.

Anna si occupa delle registrazioni a conferenze con migliaia di partecipanti. Uno dei suoi problemi è l’elenco degli iscritti è composto in realtà da più elenchi compilati da più persone in più paesi con diversi layout di tastiera. Un altro problema è che gli elenchi contengono doppioni, ma scritti a volte in modo diverso.

In queste condizioni, un semplice “Rimuovi duplicati” non serve a nulla, occorre lo strumento “santa manina”. Ma una macro che rimuova tutti i caratteri accentati e li sostituisca con i corrispettivi non accentati aiuta per lo meno a sgrossare il lavoro. La metto qui, casomai dovesse servire ad altri:

Sub CaratteriSpeciali()

'Sostituisce tutti i caratteri accentati con il corrispondente non accentato

Const AccChars = "šžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿ"
Const RegChars = "szYAAAAAACEEEEIIIIDNOOOOOUUUUYaaaaaaceeeeiiiidnooooouuuuyy"

For i = 1 To Len(AccChars)
A = Mid(AccChars, i, 1)
B = Mid(RegChars, i, 1)
Selection.Replace What:=A, Replacement:=B, MatchCase:=True, SearchFormat:=False, _
ReplaceFormat:=False
Next

Selection.Replace What:="ß", Replacement:="ss", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

End Sub

La sostituzione di “ß” con “ss” l’ho fatta separatamente, dato che non si trattava di una sostituzione uno-a-uno.

Come sempre, se sai come migliorare il codice, sono tutto orecchi.