Excel中列位置与标签的对应算法

在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中计算得出来结果一致

你可能感兴趣的:(Excel中列位置与标签的对应算法)