Convierta un número de columna a letra en Excel usando VBA

Bilal Shahid 15 febrero 2024
  1. Convierta un número de columna a letra en Excel usando VBA
  2. la función Dividir()
  3. Conclusión
Convierta un número de columna a letra en Excel usando VBA

Este artículo describe diferentes funciones que convierten un número de columna en una letra de columna en Microsoft Excel usando VBA.

Convierta un número de columna a letra en Excel usando VBA

Hay varias funciones en Microsoft Excel que le permiten convertir un número de columna en una letra de columna. Esto es muy útil para los usuarios que conocen el número de columna y lo asignan a una letra de columna.

Estas soluciones pueden reducir la molestia de buscar la columna exacta a partir de un número proporcionado.

Solución 1: use la función Celdas (). Dirección

Si conoce la fila y la columna en Microsoft Excel y desea encontrar la referencia correspondiente, use la siguiente función en VBA.

Sintaxis:

Cells(Row,Column).Address

La siguiente imagen es una representación de la función.

Usar función de celda

Solución 2: utilice la función Columnas().Dirección

Si solo se le proporciona un número de columna, aún puede encontrar la letra de columna correspondiente de la manera más simple. Utilice la función Columnas() con la función Dirección() para obtener la referencia de la columna correspondiente.

Sintaxis:

Columns(Column Index).Address

La función Columnas() se ejecutó con 100 como Índice de columnas. El resultado de la función se logra en el siguiente formato $ColumnLetter:$ColumnLetter.

El funcionamiento de la función se puede ver en la siguiente imagen.

Utilice la función Columns().Address

Solución 3: utilice la función Split() con la función Columns().Address

La función Dividir() se puede utilizar en la respuesta obtenida de la solución 2 para obtener solo las letras de la columna en lugar de la dirección completa. Esta es la sintaxis de cómo se puede usar la función Dividir sobre la función Columnas().Dirección.

Split((Columns(Column Index).Address(,0)),":")(0)

Cuando se usa la función Split(), el parámetro ColumnAbsolute en la función Address() se pasa como falso, y las subcadenas se dividen en los dos puntos Delimiter. La primera subcadena contiene la letra de la columna; por lo tanto, se adjunta un cero al final de la función Split() para especificar que se requiere la primera subcadena.

Tenga en cuenta que Split() y las funciones se describen en una sección posterior del artículo. Desplácese a continuación para obtener más detalles.

Cuando la declaración se ejecuta con un valor de Índice de columna de 100, devuelve los siguientes resultados.

Utilice la función Split() con la función Columns().Address

Solución 3: use la función Celdas () con la función Dirección ()

Otra técnica para obtener la letra de la columna de un número de columna es usar la función Celdas() con la función Dirección(). Aquí es cómo obtener la letra de la columna.

Sintaxis:

Cells(1, Column Number).Address

La declaración devuelve la referencia de celda en el siguiente formato: $CV$1. La ejecución de la instrucción de código proporciona los siguientes resultados.

Use la función Cells() con la función Address()

Refinamiento de la Solución 3

La solución 3 se puede refinar aún más para extraer solo la letra de la columna. La función Split() se puede utilizar para este propósito.

Aquí está la declaración que devuelve solo la letra de la columna.

Split(Cells(1, Column Number).Address(True, False), "$")(0)

La función Split() rompe la cadena de dirección en el signo "$", y el cero al final de la declaración indica que solo se requiere la primera subcadena.

La declaración de código produce los siguientes resultados.

Función de celdas refinadas () con función de dirección ()

Solución 4 - Crear una función

Esta solución no hace uso de un objeto de rango. Se estima que tiene una velocidad de ejecución más rápida y presumiblemente utiliza menos memoria.

Además, no requiere acceso a la API de Excel. Aquí hay una función que calcula la letra de la columna a partir del número de columna proporcionado como parámetro.

Function test(ColNum As Long) As String

    Dim n As Long
    Dim ch As Byte
    Dim str As String

    n = ColNum

    Do
        ch = ((n - 1) Mod 26)
        str = Chr(ch + 65) & str
        n = (n - ch) \ 26

    Loop While n > 0
    test = str

End Function

La función test() se puede llamar en la subrutina main() para obtener la letra de columna correspondiente al número de columna. A continuación se muestra la representación de la ejecución del programa.

Crear una función

la función Dividir()

Una función Dividir() divide la expresión de entrada en varias subcadenas en función de un delimitador pasado a la función.

Sintaxis:

Split ( Expression, [Delimiter], [Limit], [Compare] )

La función Dividir() toma una Expresión como parámetro y la divide en varias subcadenas. Este parámetro obligatorio debe pasarse a la función String().

El segundo parámetro es el Delimitador; un argumento opcional pasado a la función Split(). Un carácter de espacio es un carácter predeterminado que se considera el Delimitador, y el usuario puede especificar un Delimitador diferente para dividir la cadena, como comas, dos puntos, etc.

El parámetro Límite es un argumento opcional que especifica el número total de subcadenas que requiere el usuario. Por defecto, el valor de Límite es -1; por lo tanto, devuelve todas las subcadenas.

El parámetro Comparar es un argumento opcional que toma 0 o 1 como entrada. Especifica el tipo de comparación que necesita que realice la función.

  • Se realiza una comparación exacta que distingue entre mayúsculas y minúsculas cuando se pasa 0 como argumento. Por tanto, si el Delimitador es "XYZ", la función SÓLO aceptará "XYZ" y rechazará "xyz".
  • Se realiza una comparación que no distingue entre mayúsculas y minúsculas cuando se pasa 1 como argumento. Por lo tanto, si el Delimitador es "XYZ", la función también aceptará "xyz".

Conclusión

Las aplicaciones de Microsoft Office ofrecen numerosas funciones para sus usuarios. Con la adición de la programación en el lenguaje VBA, ha sido más fácil para los usuarios realizar tareas automatizadas con solo unas pocas líneas de código.

VBA admite numerosas funciones que permiten al usuario realizar diferentes tareas. Hay diferentes enfoques disponibles para lograr la misma tarea, como se ve en el artículo. Se utilizan numerosos enfoques para obtener la letra de la columna correspondiente a un número de columna proporcionado como entrada.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

Artículo relacionado - VBA Excel