Número de columna a letra

Solo consultas sobre Funciones y Fórmulas Excel.

Reglas del Foro
1. Antes de hacer tu pregunta intenta con el buscador de este foro (muchas preguntas ya fueron respondidas antes!)
2. Si haces una nueva pregunta, es muy recomendable que adjuntes el ejemplo Excel para poder comprenderla mejor!
3. Realiza tu pregunta de forma clara, explicando bien cada paso de lo que haces y tendrás más probabilidad de respuesta!
Compartir en:
     

Número de columna a letra

Notapor Antoni » 21 Mar 2010 08:07

Hola a to2:

Tengo la siguiente función para convertir el número de una columna a letra.

Código: Seleccionar todo
Function COLUMNA_A_LETRAS(COLUMNA As Integer) As String
'Funciona unicamente para las primeras 676 columnas
COLUMNA_A_LETRAS = ""
LETRA = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", _
              "J", "K", "L", "M", "N", "O", "P", "Q", "R", _
              "S", "T", "U", "V", "W", "X", "Y", "Z")
Y = COLUMNA: Z = (Y - 1) Mod 26: L = LETRA(Z)
If Y > 26 Then
   Z = (Y - 1) / 26
   If Z > 0 Then L = LETRA(Z - 1) & L
End If
COLUMNA_A_LETRAS = L
End Function

¿Hay alguna función, método o propiedad de Excel que haga lo mismo?

Antoni
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Antoni
Miembro Frecuente
Miembro Frecuente
 
Registrado: 22 Dic 2009 04:58
Ubicación: GALICIA (ESPAÑA)

Re: Número de columna a letra

Notapor mjrofra » 21 Mar 2010 13:44

Hola Antoni,

muy interesante tu UDF.

El primer número que se me ocurrió para probarla fue 222 y vi que el resultado según tu UDF es IN.

Al confirmar el resultado yendo a la columna 222 encontré que en realidad es HN, como también lo confirma esta fórmula: =SUSTITUIR(DIRECCION(FILA(),222,4),FILA(),"")

¿A qué crees que se deba ese resultado? ¿Estaré usando bien tu UDF? Esto fue lo que usé: =COLUMNA_A_LETRAS(222)
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
mjrofra
Miembro Frecuente
Miembro Frecuente
 
Registrado: 21 Dic 2009 21:08
Ubicación: Colombia

Re: Número de columna a letra

Notapor Antoni » 21 Mar 2010 14:17

Hola:

Pues si tienes razón, hay un error.
Había probado varios números al azar y me daba un resultado correcto.
Lo investigo.
De hecho, no he usado nunca esta función.

Gracias

Antoni
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Antoni
Miembro Frecuente
Miembro Frecuente
 
Registrado: 22 Dic 2009 04:58
Ubicación: GALICIA (ESPAÑA)

Re: Número de columna a letra

Notapor Antoni » 21 Mar 2010 14:42

Hola:

Efectivamente, había un error, ya lo he subsanado.

Código: Seleccionar todo
Function COLUMNA_A_LETRAS(COLUMNA As Integer) As String
'Funciona unicamente para las primeras 676 columnas
COLUMNA_A_LETRAS = ""
LETRA = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", _
              "J", "K", "L", "M", "N", "O", "P", "Q", "R", _
              "S", "T", "U", "V", "W", "X", "Y", "Z")
Y = COLUMNA: z = (Y - 1) Mod 26: L = LETRA(z)
If Y > 26 Then
   z = (Y - 1) / 26
   z = Int(z)        '<============= Añadido
   If z > 0 Then L = LETRA(z - 1) & L
End If
COLUMNA_A_LETRAS = L
End Function


Pido disculpas, y procuraré que no se repita.

Tomo nota de la fórmula.

Agradecido como siempre mjrofra.

Saludos

Antoni
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Antoni
Miembro Frecuente
Miembro Frecuente
 
Registrado: 22 Dic 2009 04:58
Ubicación: GALICIA (ESPAÑA)

Re: Número de columna a letra

Notapor mjrofra » 21 Mar 2010 15:25

Hola una vez más Antoni, parece que ya funciona a la perfección :D. Gracias por compartir tu trabajo, que siempre sales con unos códigos sorprendentes.

En todo caso mira que yo me quedé pensando y la fórmula que usé:

=SUSTITUIR(DIRECCION(FILA(),222,4),FILA(),"")

se puede simplificar un poco ya que la fila es irrelevante:

=SUSTITUIR(DIRECCION(1,222,4),1,"")

y pensando que una fórmula tan sencilla se puede llevar a VBA sin mucho problema, se me ocurrió algo así:

Código: Seleccionar todo
Function COLUMNA_A_LETRAS_2(COLUMNA As Integer) As String
   
    Dim Dir As String
     
    Dir = Columns(COLUMNA).Address(0, 0)
    Dir = Left(Dir, InStr(Dir, ":") - 1)
   
    COLUMNA_A_LETRAS_2 = Dir
   
End Function


Bueno, no más acá pensando en tu aporte que me pareció muy bueno y aprovechando para cruzar un par de palabras en esto que evidentemente nos apasiona.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
mjrofra
Miembro Frecuente
Miembro Frecuente
 
Registrado: 21 Dic 2009 21:08
Ubicación: Colombia

Re: Número de columna a letra

Notapor Antoni » 22 Mar 2010 06:09

¡¡ Muy bueno !!

¿Porqué no lo subes como aporte? Creo que se lo merece.

Gracias.

Antoni
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Antoni
Miembro Frecuente
Miembro Frecuente
 
Registrado: 22 Dic 2009 04:58
Ubicación: GALICIA (ESPAÑA)

Re: Número de columna a letra

Notapor Adrian » 22 Mar 2010 12:24

Hola, pongo link
funciones-formulas-calculos/columna-letra-t11511.html

Una Función perzonalizada:

Function COLUMNALETRA(Celda As Range) As String
Dim Columna As String
Columna = Celda.Address
Columna = Mid(Mid(Columna, 2), 1, InStr(1, Mid(Columna, 2), "$") - 1)
COLUMNALETRA = Columna
End Function

Salu2.xls
(la hice rápido, no tuve mucho tiempo)
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Adrian
Moderator
Moderator
 
Registrado: 13 Jun 2004 17:24
Ubicación: Chamical La Rioja ARG

Re: Número de columna a letra

Notapor Adrian » 22 Mar 2010 12:30

Hola, tomá la fórmula de mjrofra y "atajé" errores:

Function COLUMNA_A_LETRAS_2(COLUMNA As Integer) As String
COLUMNA = Abs(COLUMNA) 'por las dudas sea neg
If COLUMNA = 0 Then COLUMNA = 1 ' "Por defecto"
' "Por defecto"
If COLUMNA > Range("A1").End(xlToRight).Column Then COLUMNA = 1
Dim Dir As String
Dir = Columns(COLUMNA).Address(0, 0)
Dir = Left(Dir, InStr(Dir, ":") - 1)
COLUMNA_A_LETRAS_2 = Dir
End Function
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Adrian
Moderator
Moderator
 
Registrado: 13 Jun 2004 17:24
Ubicación: Chamical La Rioja ARG

Re: Número de columna a letra

Notapor Antoni » 22 Mar 2010 13:00

Muchas gracias a todos por las respuestas.

Antoni
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Antoni
Miembro Frecuente
Miembro Frecuente
 
Registrado: 22 Dic 2009 04:58
Ubicación: GALICIA (ESPAÑA)

Re: Número de columna a letra

Notapor Adrian » 22 Mar 2010 17:41

Esto minimiza + el código de la función:

Function CL(Celda As Range) As String
CL = Left(Mid(Celda.Address, 2), InStr(1, Mid(Celda.Address, 2), "$") - 1)
End Function
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Adrian
Moderator
Moderator
 
Registrado: 13 Jun 2004 17:24
Ubicación: Chamical La Rioja ARG

Re: Número de columna a letra

Notapor Antoni » 23 Mar 2010 06:48

Hola Adrian:

¡ Perfecto ! Simple y elegante. Muchas gracias.

Os pido disculpas, tanto a ti como a mjrofra, por no haberme dado cuenta de tu aporte del pasado día 10 en el foro de fórmulas.

Insisto, aprovechando que ya hay una entrada, ¿Porqué no aportais vuestras soluciones?

Salu2 a to2 ..to2

Antoni
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Antoni
Miembro Frecuente
Miembro Frecuente
 
Registrado: 22 Dic 2009 04:58
Ubicación: GALICIA (ESPAÑA)

Re: Número de columna a letra

Notapor galileogali » 23 Mar 2010 23:31

Ponia yo el 16/03/2010, algo casi, casi,

aca

post53656.html#p53656
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
galileogali
Moderator
Moderator
 
Registrado: 07 Ene 2005 22:46
Ubicación: QUIROGA (ba), ARGENTINA


Compartir en:
     

  • Anuncio
Manual Excel avanzado

Volver a Funciones y Fórmulas

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 7 invitados