HOWTO · VBA
How to Convert a Column Number to Letter in Excel Using VBA
Learn how to convert an Excel column number to its letter label in VBA with address-based and arithmetic approaches.
On this page
To turn a column number into its Excel letters in VBA, use Columns(columnNumber).Address when a full column address is useful, or extract the letters from that address with Split. For a bare label without a worksheet range lookup, use the arithmetic approach described below. Excel column numbering starts at 1: examples include 1 → A, 26 → Z, 27 → AA, and 100 → CV.
Convert a Column Number to a Letter in Excel Using VBA
Get a full column address with Columns and Address
Pass the column number to Excel’s Columns member and read its Address. For example, Columns(100).Address returns a full reference such as $CV:$CV, not just CV. Use this form when the address itself is what your code needs.
Extract only the column letters with Split
To get the label alone, make the column letters relative in the address and split the result at the colon: Split(Columns(100).Address(, False), ":")(0). The first part is CV; the second part repeats it after the colon. Split is a VBA function, while Columns and Address are Excel object model members.
You can also start from a cell address. Cells(1, 100).Address returns $CV$1; splitting at $ and taking element 1 gives the column label: Split(Cells(1, 100).Address, "$")(1). Cells selects the cell at the supplied row and column, and Address formats its reference.
Convert with arithmetic
An arithmetic conversion is useful when you need a string and want to avoid worksheet range lookups. The letter system is base 26 without a zero digit: subtract 1 before taking the remainder modulo 26, map that remainder to A through Z, then continue with the quotient. This adjustment is what makes the transition from Z to AA work. For example, an implementation should return A, Z, AA, and CV for inputs 1, 26, 27, and 100 respectively.
An arithmetic function using this method assumes a valid positive column number; it does not validate Excel’s worksheet limits or other inputs. Choose the address-based method when you need an Excel reference, and the arithmetic method when you need only the letters.
Understand the Split() Function
Split(expression, delimiter) divides a string wherever the delimiter occurs and returns an array of substrings. In Split(Columns(100).Address(, False), ":")(0), the colon separates CV:CV, and index 0 selects the first CV. In Split(Cells(1, 100).Address, "$")(1), the dollar signs around CV mean index 1 is the label. No conversion to String() is required for these expressions.
Conclusion
Use Columns and Address when you need an Excel reference, then use Split to extract its column label. For a standalone string, arithmetic can produce the same letters without a worksheet range lookup. The arithmetic method expects a valid positive input and does not perform input validation.