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進変換(逆は無し)

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
  • RT @__apf__: How to write a research paper: a guide for software engineers & practitioners. docs.google.com/presentation/d… /cc @inwyrd 6 days ago
  • RT @HayatoChiba: 昔、自然と対話しながら数学に打ち込んだら何かを悟れるのではと思いたち、専門書1つだけ持ってパワースポットで名高い奈良の山奥に1週間籠ったことがある。しかし泊まった民宿にドカベンが全巻揃っていたため、水島新司と対話しただけで1週間過ぎた。 それ… 3 weeks ago
  • RT @googlecloud: Ever wonder what underwater fiber optic internet cables look like? Look no further than this deep dive w/ @NatAndLo: https… 3 weeks ago
  • @ijin UTC+01:00 な時間帯で生活しています、、、 6 months ago
  • RT @mattcutts: Google's world-class Site Reliability Engineering team wrote a new book: amazon.com/Site-Reliabili… It's about managing produc… 9 months ago
%d bloggers like this: