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.
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.
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.
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.
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.
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.
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 elDelimitador
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 elDelimitador
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.
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