【Python】gspreadなどを使う時にセルを数値からアルファベット形式(A1 notation)に加工する

375 語
2 分
【Python】gspreadなどを使う時にセルを数値からアルファベット形式(A1 notation)に加工する

はじまり#

リサちゃん avatar
リサちゃん
うーむ、gspreadって、セルを範囲で指定する時、(1,2)のセル形式でセルを操作できないのかあ・・・。(1,2)のセルを(B1)みたいな感じで取得できないかなあ・・・
リサちゃん avatar
リサちゃん
・・・お! こんな感じかなあ。一旦「ZZZ」まで出力できればいいかなあ。

今回のソース#

以下のソースが、数値形式からアルファベット形式に変換するスクリプトになります。

src.py:

def to_alpha_under_3digits(number : int) -> str:
"""
Number of cell this method can format is 26 x 26 x 27 = 18252.
"""
number_of_alphabet = 26
h = int((number - 1 - number_of_alphabet) / (number_of_alphabet * number_of_alphabet))
i = int((number - 1) / number_of_alphabet) - h * number_of_alphabet
j = number - (i * number_of_alphabet) - (h * number_of_alphabet * number_of_alphabet)
alpha = ""
for k in h, i, j:
if k != 0:
alpha += chr(k + 64)
return alpha
def get_cell_in_a1_notation(row_index : int, col_index : int) -> str:
con_index_alpha =to_alpha_under_3digits(col_index)
cell = "{1}{0}".format(str(row_index), str(con_index_alpha))
return cell
def get_range_in_a1_notation(start_row_index : int, start_col_index : int, num_rows : int, num_cols : int) -> str:
start_cell = get_cell_in_a1_notation(start_row_index, start_col_index)
end_row_index = start_row_index + num_rows - 1
end_col_index = start_col_index + num_cols - 1
end_cell = get_cell_in_a1_notation(end_row_index, end_col_index)
return "{}:{}".format(start_cell, end_cell)
alpha_1 = to_alpha_under_3digits(1)
alpha_2 = to_alpha_under_3digits(26)
alpha_3 = to_alpha_under_3digits(29)
alpha_4 = to_alpha_under_3digits(16784)
print(alpha_1)
print(alpha_2)
print(alpha_3)
print(alpha_4)
print("==============")
cell_1 = get_cell_in_a1_notation(1, 1)
cell_2 = get_cell_in_a1_notation(10, 26)
cell_3 = get_cell_in_a1_notation(15, 29)
print(cell_1)
print(cell_2)
print(cell_3)
print("==============")
range_1 = get_range_in_a1_notation(1, 1, 10, 26)
range_2 = get_range_in_a1_notation(10, 26, 15, 29)
range_3 = get_range_in_a1_notation(15, 29, 20, 16784)
print(range_1)
print(range_2)
print(range_3)
Terminal window
A
Z
AC
XUN
==============
A1
Z10
AC15
==============
A1:Z10
Z10:BB24
AC15:XVP34

今回のソースについて#

アルファベットに変換する(to_alpha_under_3digits())#

「ZZZ」までのアルファベットに変換することが出来ます。数値で言うと、18,252列までのインデックスに適用できます。

出力例:「A」、「Z」、「AC」、「XUN」など

アルファベット形式でセルを表現する(get_cell_in_a1_notation())#

アルファベットに変換したセルを使用してセルを取得します。

出力例:「A1」、「Z10」、「AC15」など。

アルファベット形式でセル範囲を表現する(get_range_in_a1_notation())#

アルファベットに変換したセルを使用してセル範囲を取得します。

出力例:「A1」、「Z10」、「AC15

おしまい#

リサちゃん avatar
リサちゃん
・・・よーし! いっちょあがり〜!

以上になります!

記事を共有

この記事が役に立ったなら、ぜひ他の人と共有してください!

【Python】gspreadなどを使う時にセルを数値からアルファベット形式(A1 notation)に加工する
https://endorphinbath.com/posts/python-gspread-number-to-a1notation/
著者
kinkinbeer135ml
公開日
2022-01-19
ライセンス
CC BY-NC-SA 4.0
Profile Image of the Author
kinkinbeer135ml
SIerをやめて、プログラミングを勉強しています。※Amazonアソシエイトに参加しています。
お知らせ
私のブログへようこそ!これはサンプルのお知らせです。
音楽
カバー

音楽

再生中なし

0:00 0:00
歌詞なし
カテゴリ
タグ
サイト統計
記事
287
カテゴリー
8
タグ
93
総文字数
486,174
運用日数
0
最終活動
0 日前

目次