Excel column numbers to letters
- From: chawki.jreige@xxxxxxxxx
- Date: Wed, 30 May 2012 11:31:27 -0700 (PDT)
Hi everybody.
I'm trying to write a procedure to convert a column number (integer) to an Excel column name. I think I'm almost there but the procedure degenerates when the column names go to multiple letters (AA, BA, etc.).
Here's what I have so far:
proc _columnNumberToLetter {columnNumber} {
set listLetters [list 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]
if {$columnNumber <= 26} {
set columnLetter [lindex $listLetters [expr $columnNumber - 1]]
} else {
set tickOver [expr int($columnNumber / 26)]
set remainder [expr $columnNumber - ($tickOver * 26)]
if {$tickOver <= 26} {
append columnLetter [lindex $listLetters [expr $tickOver - 1]]
if {$remainder == 0} {
append columnLetter "Z"
} else {
append columnLetter [lindex $listLetters [expr $remainder - 1]]
}
}
}
return $columnLetter
}
As I said, it's 'mostly' working. :) So if I pass the procedure a value of 1, it'll return 'A'. A value of 26 returns 'Z'. However, a value of 52 returns 'BZ' when it should be 'AZ'.
I'm sure I'm missing something obvious. I seem to think that I'll need to recurse the procedure to handle all possible numbers. I'd greatly appreciate anybody's help.
CJ
.
- Follow-Ups:
- Re: Excel column numbers to letters
- From: Uwe Klein
- Re: Excel column numbers to letters
- From: Andreas Leitgeb
- Re: Excel column numbers to letters
- Prev by Date: Match Highest number in directory
- Next by Date: Re: Match Highest number in directory
- Previous by thread: Match Highest number in directory
- Next by thread: Re: Excel column numbers to letters
- Index(es):