みーのぺーじ

みーが趣味でやっているPCやソフトウェアについて.Python, Javascript, Processing, Unityなど.

エクセルのセル番号は変則的

エクセルの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進数表記でよいのではないかと思います.