我搜索过这个网站并用谷歌搜索了一个公式。我需要根据字母计算 Excel 列号,例如:
A=1
B=2
..
AA=27
AZ=52
...
AAA=703
在字母表随机循环后,代码似乎少了 1 位数字(AZ -> BA == 少数字)。它看起来还会从两个不同的输入随机产生相同的整数:
GetColumnNumber(xlLetter : Text) : Integer //Start of function
StringLength := STRLEN(xlLetter);
FOR i := 1 TO StringLength DO BEGIN
Letter := xlLetter[i];
IF i>1 THEN
Count += ((xlLetter[i-1]-64) * (i-1) * 26) - 1;
Count += (Letter - 64);
END;
EXIT(Count); //return value
我的代码示例是用 C/AL 编写的,用于 Dynamics NAV,但我也可以编写 C# 或 vb.net,所以我不介意示例是否使用这两种语言中的任何一种。
In VBA:
Public Function GetCol(c As String) As Long
Dim i As Long, t As Long
c = UCase(c)
For i = Len(c) To 1 Step -1
t = t + ((Asc(Mid(c, i, 1)) - 64) * (26 ^ (Len(c) - i)))
Next i
GetCol = t
End Function
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)