



En ocasiones para unificar datos se requiere eliminar todos los acentos que incluye la hoja de cálculo, necesitando una macro para quitar acentos en el texto Excel.

En la columna A disponemos de una serie de nombres y apellidos y deseamos eliminar los acentos.
A | |
---|---|
1 | Nombre |
2 | José Rodríguez Sánchez |
3 | Rosa Alcalá Almazán |
4 | María Álvarez Alegría |
5 | Miguel Báez Barragán |
6 | Ana Dávila Escrivá |
7 | Ramón Fábregas Galán |
CREAR LA FUNCIÓN
Con Excel abierto.
Pulsar la tecla Alt y mantener pulsada
Pulsar la tecla F11. Mostrará el editor de Visual Basic.
Ir a: Barra de Menú
Insertar
Módulo. Mostrará la ventana del módulo donde escribimos la función.
Escribir el código:
Public Sub QuitaAcentos()
Dim ConAcento As Variant, SinAcento As Variant, i As Integer
ConAcento = Array("á", "é", "í", "ó", "ú", "Á", "É", "Í", "Ó", "Ú")
SinAcento = Array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U")
Application.ScreenUpdating = False
For i = LBound(ConAcento) To UBound(ConAcento)
ActiveSheet.Cells.Replace What:=ConAcento(i),_
Replacement:=SinAcento(i), LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=FalseNext i
Application.ScreenUpdating = True
End Sub
También podemos reemplazar el código por el siguiente que incluye las letras vocales y consonantes que en diferentes idiomas incluyen acentos.
Public Sub QuitaAcentosCompleto()
Dim ConAcento As Variant, SinAcento As Variant, i As Integer
ConAcento = Array("á", "à", "ä", "â", "ã", "å", "ç", "é", "è", "ê", "ë", "í", "ì", "î", "ï", "ó", "ò", "ô", "ö", "õ", "ð", "š", "ú", "ù", "û", "ü", "ý", "ÿ", "ž", "Á", "À", "Ä", "Â", "Ã", "Å", "Ç", "É", "È", "Ê", "Ë", "Í", "Ì", "Î", "Ï", "Ó", "Ò", "Ô", "Ö", "Õ", "Ð", "Š", "Ú", "Ù", "Û", "Ü", "Ý", "Ÿ", "Ž")
SinAcento = Array("a", "a", "a", "a", "a", "a", "c", "e", "e", "e", "e", "i", "i", "i", "i", "o", "o", "o", "o", "o", "o", "s", "u", "u", "u", "u", "y", "y", "z", "A", "A", "A", "A", "A", "A", "C", "E", "E", "E", "E", "I", "I", "I", "I", "O", "O", "O", "O", "O", "O", "S", "U", "U", "U", "U", "Y", "Y", "Z")
Application.ScreenUpdating = False
For i = LBound(ConAcento) To UBound(ConAcento)
ActiveSheet.Cells.Replace What:=ConAcento(i),_
Replacement:=SinAcento(i), LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=FalseNext i
Application.ScreenUpdating = True
End Sub
Guardar el libro con la extensión *.xlsm. Libro habilitado para macros.
EJECUTAR MACRO
Ir a: Cinta de Opciones
Pestaña: Programador o Desarrollador (según la versión Excel) / Grupo: Código
Macros; O también, Atajo de teclado Alt + F8. Mostrará cuadro de diálogo de macro.
Ir a: Macros en
Seleccionar: PERSONAL.XLSB
Ir a: Nombre de la macro
Clic sobre la macro creada.
Pulsar el botón Ejecutar. Reproducirá la macro.
Verificar como en el texto seleccionado se eliminan todos los acentos.
Para reproducir la macro se podrá insertar una acceso directo en la barra de acceso rápido o en la cinta de opciones.

de lujo
EXCELente.
como lo puedo adaptar para que funcione en segundo plano y mas específicamente en una cierta columna
Hola Cesar,
En el código puedes cambiar: ActiveSheet.Cells.Replace por Worksheets("Hoja2").Columns("A").Replace (por la hoja y columna deseada).
En cuanto al segundo plano puedes aplicar al inicio del código: Application.ScreenUpdating = False. También puedes aplicar la macro a un evento, al abrir, al cerrar, al actualizarse, etc...
Saludos.
Hola
Una pregunta en relacion a lo anterior.
Si quiero que la macro aplique a todas las hojas pero a una sola columna, como seria??
Gracias, un saludo.
Hola Jose Manuel,
El código deberá primero identificar cada hoja existente en el libro y sobre ella aplicar la columna deseada...
Saludos.
Hola. Excelente. Adicional tengo una consulta.
El codigo no respeta el reemplazo de las minusculas o mayusculas a reemplazar Ejm: Tengo una palabra en mayuscula "ACCIÓN" y lo reemplazo a "ACCIóN". que faltaría ?.
Hola Rafael,
Deberás de incluir la letra "Ó" y "ó" con acento y en sin acento "O" y "o" en el código como se indica...
Saludos.
Cambia la parte "MatchCase:=False" a True, con esto ya distingue entre letras altas y bajas.
saludos
Hola buen día, gracias por tu aportación. Para implementarlo en WORD, sería reemplazar las partes de celdas por la selección de Word, pero cómo?
Hola Luis,
Las macros de Excel no son compatibles en Word.
Saludos.