やあ子供たち。
Excelでは列を指定する際にアルファベットが使われてるよな。
Aから始まって、B,C、、Zまで来たら、
次はAA、AB、AC、という具合になって、AZまできたら
次はBA、BB、BC、、という
具合にね。
さてさて、OpenPyXL などを使っていて、「1」から始まる列番号を、
このアルファベット名にしたい場合があるよな。
そこで今日はそんな関数を作ったので以下メモだよ。
num2alpha = lambda c: chr(c+64) def num2alphaXL(c): j = c//26 yo = c%26 if(c<=26): return num2alpha(c) else: if( yo==0 ): return num2alpha(j-1)+'Z' else: return num2alpha(j)+num2alpha(yo)
はい。なんて汚いロジックなんだろうね。でも動けばいいのさ。
だって誰もこんなロジック美しく書くことに時間かけてらんないだろ?
おじさん何か間違ったこと言ってるかな?うだろ?いんだよこれで。
さてさて、これを以下のようなテストプログラムから呼んでみよう。
#""" for i in range(1,60): print( str(i) + " :" +num2alphaXL(i)) """ #"""
結果は以下のようになるよ
1 :A 2 :B 3 :C 4 :D 5 :E 6 :F 7 :G 8 :H 9 :I 10 :J 11 :K 12 :L 13 :M 14 :N 15 :O 16 :P 17 :Q 18 :R 19 :S 20 :T 21 :U 22 :V 23 :W 24 :X 25 :Y 26 :Z 27 :AA 28 :AB 29 :AC 30 :AD 31 :AE 32 :AF 33 :AG 34 :AH 35 :AI 36 :AJ 37 :AK 38 :AL 39 :AM 40 :AN 41 :AO 42 :AP 43 :AQ 44 :AR 45 :AS 46 :AT 47 :AU 48 :AV 49 :AW 50 :AX 51 :AY 52 :AZ 53 :BA 54 :BB
ただ、お気づきかも知れないが、ZZまでしか対応してないのだと思う。
698 :ZV 699 :ZW 700 :ZX 701 :ZY 702 :ZZ 703 :[A 704 :[B 705 :[C
ほらね。(注意せよ!)
でもいいんだ。おじさんは700列まであるExcelには縁も興味もないので。
チャオ!