我在工作中遇到一个问题,在编写excel宏代码的时候,有时候,某一个数据需要定位放在某一个单元格中,但是这个单元格并不是本身就存在的单元格,而是在程序执行过程中,一步一步填写数据之后生成出来的单元格,只知道应该是第几列,却不知道列名字母是什么,所以,我就编写了下面的小程序,两个小程序的效果一样,只不过在编写思路上有差别。
这两个小程序都采用了函数的方式,方便在其他的程序中调用。
Function ColNoToColName1(ColNo As Integer) As String ‘列号转为列名
If ColNo > 26 Then
ColName = Chr(Int((ColNo - 1) / 26) + 64) & Chr(((ColNo - 1) Mod 26) + 65)
Else
ColName = Chr(ColNo + 64)
End If
ColNoToColName1 = ColName
End Function
Function ColNoToColName2(ColNo As Integer) As String ‘列号转为列名
ColName = ""
LeftWord = ""
RightWord = ""
If ColNo <= 26 Then
ColName = Chr(Asc("A") + ColNo - 1) ‘单字母列
Else
If Int(ColNo / 26) = (ColNo / 26) Then
LeftWord = Chr(Asc("A") + Int(ColNo / 26) - 2) ‘双字母列
RightWord = Chr(Asc("A") + Int(ColNo - (Int(ColNo / 26) - 1) * 26) - 1)
Else
LeftWord = Chr(Asc("A") + Int(ColNo / 26) - 1) ‘双字母列
RightWord = Chr(Asc("A") + Int(ColNo - Int(ColNo / 26) * 26) - 1)
End If
ColName = LeftWord & RightWord
End If
ColNoToColName2 = ColName
End Function