Ejemplo de código VBA (Microsoft Excel)
Macro en VBA para Microsoft Excel que determina si una cadena de texto es un palíndromo o no, usando un ‘repita para’… Al final encuentras el enlace a un post con un algoritmo recursivo que tiene el mismo propósito.
¿Qué es un palíndromo?
“Palíndromo” viene del griego palin dromein que significa literalmente “que recorre a la inversa”. Es decir, que la última letra de una frase es la misma que la primera, que la penúltima es idéntica a la segunda, etcétera.
Es igual que los números y las fechas capicúas (2002, 242.242, 11.11.11…), pero con las letras.
¡Por supuesto, es el pasatiempo favorito de supersticiosos y locos por la simetría 😯!
Los palíndromos van desde algunas de las palabras más bonitas del castellano, como “reconocer” o el colorante “anilina”, y nombres propios hasta poemas enteros que se han escrito con simetría perfecta, como los de Darío Lancini.
Ejemplos de palíndromo
- “oso”, “reconocer”, “radar”, “arenera”
- “anilina”, “anona”, “Menem”
- “logra Casillas allí sacar gol”
- “dábale arroz a la zorra el abad”
En estos ejemplos, al leerlos de izquierda a derecha o de derecha a izquierda, las palabras o frases mantienen su significado original, lo que los convierte en palíndromos. Es importante destacar que los espacios y signos de puntuación generalmente se ignoran al verificar si una cadena es un palíndromo.
Dato curioso:
Hay al menos (para la fecha de este post) un total de 242.242 palíndromos… reunidos por Víctor Carbajo en los últimos 30 años, en una especie de ¡incurable manía capicúa! Y los comparte regularmente en su cuenta de Twitter (o X) (@victorcarbajo).
VBA:
Dim cleanStr As String
Dim i As Integer
Dim lenStr As Integer
' Convertir la cadena a minúsculas y eliminar espacios
cleanStr = LCase(Replace(cadena, " ", ""))
' Obtener la longitud de la cadena
lenStr = Len(cleanStr)
' Comparar caracteres desde los extremos hacia el centro
For i = 1 To lenStr \ 2
If Mid(cleanStr, i, 1) <> Mid(cleanStr, lenStr - i + 1, 1) Then
EsPalindromo = False
Exit Function
End If
Next i
' Si no se encontraron diferencias, es un palíndromo
EsPalindromo = True
End Function
- Abre Microsoft Excel y abre el libro de Excel donde deseas usar la macro.
- Presiona `Alt + F11` para abrir el Editor de Visual Basic para Aplicaciones (VBA).
- En el menú del Editor de VBA, selecciona `Insertar` y luego `Módulo`.
- En el nuevo módulo creado, pega el código proporcionado.
- Cierra el Editor de VBA y vuelve a tu hoja de Excel.
Ahora puedes usar la función `EsPalindromo` en tu hoja de Excel de la siguiente manera:
Si quieres comprobar si la celda A1 contiene un palíndromo, escribe la fórmula `=EsPalindromo(A1)` en cualquier otra celda. El resultado será `VERDADERO` si es un palíndromo y `FALSO` si no lo es.
Espero que esta macro te sea útil ☺ para determinar si una cadena de texto es un palíndromo o no en Excel.
Algoritmo recursivo para determinar si una frase es Palíndromo