Esto funciona bien en VBA mediante el uso de un doble sustituir, en donde R es un teléfono único Rango de Excel:
ColumnLetter = Replace(Replace(R.AddressLocal(ReferenceStyle:=1), "$", vbNullString), R.Row, vbNullString)
Es basado en la idea equivalente para usar en una Hoja de trabajo. En una fórmula de celda usar esto, es aún más corto:
=SUBSTITUTE(ADDRESS(1,COLUMN(M1),4),1,"")
Esto devuelve la letra M y trabaja hasta XFD columna. La referencia de celda M1 puede ser cualquier Rango en cualquier lugar. La Columna superior izquierda se devuelve para Rangos o más de una celda.
Obtiene la DIRECCIÓN de la primera celda de la columna y luego elimina la fila 1 sustituyéndola por una cadena NullString. (El 4 en la DIRECCIÓN se asegura de que la dirección se devuelva como una dirección relativa, es decir, una sin y $ ingresa).
Gracias a barry houdini que me impulsó en la búsqueda de una buena respuesta a esto.
Este código es incorrecto. Aquí hay una versión corregida: \t \t var location = sheet.Range ["A1"]. Offset [0, columnNumber - 1] .Address [true, true, XlReferenceStyle.xlA1, Missing, Missing]; \t \t \t var tokens = location.Split ('$'); \t \t \t tokens de retorno [1]; –
@PhredMenyhert su código solo devolverá 'B' – sam