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

The Importance of Music for Children...

Algoritmos de búsqueda más conocidos

Programa para reducir una fracción dada X/Y

Alan Turing, un visionario...

Ejecución de la instrucción a := a+b en un lenguaje de bajo nivel