excel的列名转数字很简单,几分钟就可以搞定,但是数字转列名就相当麻烦。
起初我是仿照计算16进制的方法计算的,随便测试几个特定值,没发现问题。
sn = 25 × 整数列号 + 1
n = 取整 (求自然对数 (sn) ÷ 求自然对数 (26)) ' ’等比数列sn,确定长度n
' 调试输出 (n)
.计次循环首 (n, m)
.如果 (整数列号 % 26 = 0)
d = (整数列号 - 1) ÷ 求次方 (26, n - m) ' ’26倍数需先减1方便处理
.否则
d = 整数列号 ÷ 求次方 (26, n - m)
.如果结束
a = 取整 (d)
.如果真 (a ≥ 26)
a = 26
.如果真结束
' 调试输出 (a)
.如果 (整数列号 % 26 = 0)
.如果 (m ≠ n)
文本 = 文本 + 字符 (到字节 (a) + 64) ' ’处理非最后一位
.否则
文本 = 文本 + 字符 (到字节 (a) + 65) ' ’处理最后一位
.如果结束
.否则
文本 = 文本 + 字符 (到字节 (a) + 64)
.如果结束
整数列号 = 整数列号 - a × 求次方 (26, n - m)
.计次循环尾 ()
结果昨晚解答某个问题时发现遇到26的倍数列就出现异常,于是重新检查计算方法才发现问题,改来改去都没改好。
网上查别的资料也有遇到26倍数列出现问题的,可惜都没啥帮助。
一直到今天又花了点时间,重写了方法才完全搞定这个问题,这里把两个计算方法源码分享一下。
上一篇 扩展性挺强的防VMP加密程序
下一篇 文件夹和文件复制移动软件