HOWTO · VBA

Cómo convertir un número de columna en letra en Excel usando VBA

Aprenda a convertir un número de columna de Excel en su etiqueta de letra en VBA con métodos basados en direcciones y aritméticos.

En esta página

Para convertir un número de columna en sus letras de Excel en VBA, usa Columns(columnNumber).Address cuando te resulte útil una dirección de columna completa, o extrae las letras de esa dirección con Split. Para obtener solo la etiqueta, sin consultar un rango de la hoja de cálculo, usa el método aritmético que se describe a continuación. La numeración de columnas de Excel empieza en 1: por ejemplo, 1 → A, 26 → Z, 27 → AA y 100 → CV.

Convertir un número de columna en una letra en Excel usando VBA

Obtener una dirección de columna completa con Columns y Address

Pasa el número de columna al miembro Columns de Excel y lee su Address. Por ejemplo, Columns(100).Address devuelve una referencia completa como $CV:$CV, no solo CV. Usa esta forma cuando tu código necesite la dirección en sí.

Extraer solo las letras de la columna con Split

Para obtener solo la etiqueta, haz que las letras de la columna sean relativas en la dirección y divide el resultado por los dos puntos: Split(Columns(100).Address(, False), ":")(0). La primera parte es CV; la segunda la repite después de los dos puntos. Split es una función de VBA, mientras que Columns y Address son miembros del modelo de objetos de Excel.

También puedes partir de la dirección de una celda. Cells(1, 100).Address devuelve $CV$1; al dividir por $ y tomar el elemento 1 se obtiene la etiqueta de la columna: Split(Cells(1, 100).Address, "$")(1). Cells selecciona la celda situada en la fila y la columna indicadas, y Address da formato a su referencia.

Convertir con aritmética

Una conversión aritmética es útil cuando necesitas una cadena y quieres evitar las consultas de rangos de la hoja de cálculo. El sistema de letras es de base 26 sin dígito cero: resta 1 antes de tomar el resto módulo 26, asigna ese resto a las letras de la A a la Z y continúa con el cociente. Este ajuste es lo que hace que funcione la transición de Z a AA. Por ejemplo, una implementación debería devolver A, Z, AA y CV para las entradas 1, 26, 27 y 100, respectivamente.

Una función aritmética que use este método supone un número de columna positivo válido; no valida los límites de la hoja de cálculo de Excel ni otras entradas. Elige el método basado en direcciones cuando necesites una referencia de Excel y el método aritmético cuando solo necesites las letras.

Comprender la función Split()

Split(expression, delimiter) divide una cadena en cada posición en la que aparece el delimitador y devuelve una matriz de subcadenas. En Split(Columns(100).Address(, False), ":")(0), los dos puntos separan CV:CV y el índice 0 selecciona el primer CV. En Split(Cells(1, 100).Address, "$")(1), los signos de dólar que rodean a CV hacen que el índice 1 sea la etiqueta. No se requiere ninguna conversión a String() para estas expresiones.

Conclusión

Usa Columns y Address cuando necesites una referencia de Excel y, a continuación, usa Split para extraer su etiqueta de columna. Para obtener una cadena independiente, la aritmética puede producir las mismas letras sin consultar un rango de la hoja de cálculo. El método aritmético espera una entrada positiva válida y no realiza ninguna validación de la entrada.