直積で求めることができます。文字列の配列を一挙に作ってしまおうという作戦。"GS"3桁あれば18,278列までまかなえるので充分なのですが、この数を配列で用意しておくと、メモリ効率がよくない感じ。桁上がりで1文字戻す特定の番号の列名が欲しいとき、上記のように配列に用意しておいた値を引くという手もありますが、できれば算出してしまいたいもの。26文字を使うので一瞬26進数のように錯覚したのですが、そうではありません。文字を使うとわかりやすくなると思います。000〜999という並びになることになります。9の次が10でなく00になるようにするためには、桁上がりがおこったときに、桁上がりした桁の値を1小さくしてやる必要があります。resultend回さない方法はないのかループでぐるぐる回すのがRubyっぽくないと、その後丸1日ぐらい考え続けていました。3桁の26進数という関係になっていることがわかります。200であれば2桁になるので、26を引いて26進数変換すればもとめる文字列になりそうです。"6i"はい、なりません。これは考え方がまずいのではなく、使う文字の問題です。下駄を履かせることで期待する文字が得られることになります。"S"桁ごとに下駄を履かせるのは面倒なので、26進数で文字列にしたものを一旦36進数として解釈し、各桁の下駄の値を足し合わせた値を加えて36進数として文字列に変換します。最後に、列名は大文字で欲しいのでupcaseメソッドで大文字にしています。"GS"そうすると最後に残るのが桁数の取得です。取得することができるようになります。