エクセルのN番目のセル番号を取得する関数は,少し変則的な表記であることを知りましたので,メモしておきます.
エクセルのセル番号は以下のように増えていきます.
- 1,2,...,26 → A,B,...Z
- 27,28,29,...,701,702 → AA,AB,AC,..ZY,ZZ
- 703,704,705,...,18277,18278 → AAA,AAB,AAC,...ZZY,ZZZ
- 18279,18280,18281,...,475253,475254 → AAAA,AAAB,AAAC,...ZZZY,ZZZZ
アルファベットは26文字なので26進数のような印象をうけますが,2文字で作れる個数が 702 で, 26 × 27 ですから,27進数にも見えます.
しばらく考えると,最初に 0 を補って桁ごとに見ていけば少し変則的な26進数であることが分かりましたので,いい感じに余りを調整してあげればよさそうです.
標準入力から数字を取得して結果を出力する Python スクリプトは以下のようになります.
import math a = int(input()) r = "" while a > 0: a -= 1 b = a % 26 r = chr(65 + b) + r a = math.floor(a / 26) print(r)
以前からエクセルは好きになれないソフトウェアですが,こういった変則的な規則が原因なのかもしれません.素直に16進数表記でよいのではないかと思います.