Cela fonctionne bien en VBA en utilisant un double remplacer, où R est une seule cellule Excel Range:
ColumnLetter = Replace(Replace(R.AddressLocal(ReferenceStyle:=1), "$", vbNullString), R.Row, vbNullString)
Il est basé sur l'idée équivalente à utiliser sur une feuille de travail. Dans une formule de cellule utilise cela, il est encore plus court:
=SUBSTITUTE(ADDRESS(1,COLUMN(M1),4),1,"")
Cela renvoie la lettre M et travaille jusqu'à la colonne XFD. La référence de cellule M1 peut être n'importe quelle plage n'importe où. La colonne en haut à gauche est retournée pour Ranges ou plus d'une cellule.
Il obtient l'ADRESSE de la première cellule dans la colonne, puis supprime la fin 1 en lui substituant un NullString. (Le 4 dans l'ADRESSE s'assure que l'Adresse est retournée comme une Adresse Relative, c'est-à-dire une sans et $ signe dedans.)
Merci à barry houdini qui m'a mis en quête d'une bonne réponse à cela.
Ce code est erroné. Voici une version corrigée: \t \t var location = sheet.Range ["A1"]. Décalage [0, columnNumber - 1] .Address [true, true, XlReferenceStyle.xlA1, manquant, manquant]; \t \t \t var tokens = location.Split ('$'); \t \t \t retourner les jetons [1]; –
@PhredMenyhert votre code retournera seulement 'B' – sam