Excelの列番号を数字に変換

■前提

Excel の列番号は A-Z で 26 表記されている。

■ユースケース

CSVファイルをExcel内でしか処理していない人は「10列目」のことを「J列目」と表現したりするので、10進表記と「A-Z」の26進表記を手っ取り早く変換したい場合の利用を想定。

■プログラム

深い理由はないけれども、とりあえず Python で実装
・10進→26進変換(num2char)
・26進→10進変換(char2num)

def num2char(num):
  '''
  1  -> A
  27 -> AA
  '''
  quotient, remainder = divmod(num, 26)
  chars = ''
  if quotient > 0:
    chars = chr(quotient + 64)
  if remainder > 0:
    chars = chars + chr(remainder + 64)
  return chars

def char2num(chars):
  '''
  A  -> 1
  AA -> 27
  '''
  num = 0
  for c in chars:
    num = num * 26 + (ord(c) - 64)
  return num

if __name__ == '__main__':
  for n in (1, 27, 30, 80):
    c = num2char(n)
    print n, c, char2num(c)

■参考リンク

Excel で列番号を英文字に変換する方法@マイクロサポートオンライン
Microsoft Visual Basic for Applications (VBA) 関数を利用した10進→26進変換(逆は無し)

Advertisements
Tagged with: , , ,
Posted in algorithm, MSOffice, python, tip

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Archives

Error: Twitter did not respond. Please wait a few minutes and refresh this page.

%d bloggers like this: