在Excel列标签中,前26列用A-Z表示,然后是两位AA-ZZ,然后是三位AAA字母表示,在Excel中获取当前列位置,可以用=COLUMN()
来获知。怎么从列位置转换为标签,琢磨了一下,写了一个方法。下面是用Python描述的代码,其它语言可参照着修改即可
def fun(num):
str = ''
if num <= 0:
return str
num -= 1
A = (num-26 if num-26 > 0 else num)//(26*26)
B = (num-A*26*26)//26
C = num-A*26*26-B*26
#C 也可以采用如下方式进行计算
# C = (num-A*26*26) % 26
# print(A, B, C)
if A > 0:
str = chr(A+64)
if B > 0:
str += chr(B+64)
str += chr(C+65)
return str
A,B,C分别表示不同位置上的数值(1-26),字母A的ascii码为65
运行测试结果如下
2 -> B
26 -> Z
27 -> AA
51 -> AY
52 -> AZ
701 -> ZY
702 -> ZZ
703 -> AAA
704 -> AAB
728 -> AAZ
729 -> ABA
1378 -> AZZ
1379 -> BAA
2054 -> BZZ
2055 -> CAA
结果与Excel中计算得出来结果一致