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:

Function EsPalindromo(cadena As String) As Boolean
    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


Para usar esta macro, sigue estos pasos:

  1. Abre Microsoft Excel y abre el libro de Excel donde deseas usar la macro.
  2. Presiona `Alt + F11` para abrir el Editor de Visual Basic para Aplicaciones (VBA).
  3. En el menú del Editor de VBA, selecciona `Insertar` y luego `Módulo`.
  4. En el nuevo módulo creado, pega el código proporcionado.
  5. 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

Con más vistas en el último mes

Diferencias entre "proceso", "actividad" y "tarea"

Importancia de la música para los niños…

¿Ya estás utilizando las alertas de Google académico?