Excelの列の形式を数字に変換する

Excel等では列が"AA"とか"AB"のようにアルファベットで表示されているんだけど、この表記だと今の列が何列目か直観的に分からないので書いてみた。

def col_to_number(str)
  sum = 0
  al = ("a".."z").to_a.join
  str.downcase.split(//).reverse.each_with_index do |s, i|
    sum += (al.index(s) + 1) * [(26 ** i), 1].max
  end
  sum
end

irb(main):270:0> col_to_number "a"
=> 1
irb(main):271:0> col_to_number "aa"
=> 27