I am not exactly sure what the OP was trying to do .. except that it
has to do with Columns in Excel. It does seems to me to be fairly
complicated. If this off topic, please excuse.
[snip]
# method to convert from numeric column to alpha col
# accepts numeric column 1 through 256
# returns alpha column A through IV
# returns empty string on invalid input
def n2a_col(num_col)# verify that it in the range of 1 to 255
return nil if num_col < 1 || num_col > 256mostSD = num_col / 26 # SD = Significant Digit
leastSD = num_col % 26if leastSD == 0
mostSD -= 1
leastSD = 26
endleastSA = ('A'[0] + leastSD - 1 ).chr
mostSA = mostSD > 0 ? ('A'[0] + mostSD - 1).chr : ''mostSA + leastSA
end
Not as efficient, but simpler:
def n2a_col( num_col )
if (1..255).include?( num_col )
a = 'A'
( num_col-1 ).times{ a = a.succ }
a
end
end
[ 0, 1, 2, 26, 27, 250, 255, 256 ].each{ |n|
puts "%3d => %s" % [ n, n2a_col( n ).inspect ]
}
#=> 0 => nil
#=> 1 => "A"
#=> 2 => "B"
#=> 26 => "Z"
#=> 27 => "AA"
#=> 250 => "IP"
#=> 255 => "IU"
#=> 256 => nil
···
From: bbiker [mailto:renard@nc.rr.com]
Sent: Thursday, June 07, 2007 12:00 PM