excel vba 数字列转成字母列
Subfind()What=InputBox("请输入数字")k=CInt(What)\26j=CInt(What)Mod26Ifk<=26ThenIfj=0ThenIf...
Sub find()
What = InputBox("请输入数字")
k = CInt(What) \ 26
j = CInt(What) Mod 26
If k <= 26 Then
If j = 0 Then
If k = 1 Then
MsgBox Chr(90)
Else
MsgBox Chr(65 - 2 + k) & Chr(90)
End If
Else
If k = 0 Then
MsgBox Chr(65 - 1 + j)
Else
MsgBox Chr(65 - 1 + k) & Chr(65 - 1 + j)
End If
End If
End If
If j = 0 And k = 27 Then MsgBox Chr(90) & Chr(90)
Cells(1, CInt(What)).Activate
End Sub
我只能写到ZZ。
三位字母列的,绞尽脑汁也无法想出啊。我有些怀疑用这种方法能不能做出来?
还是我没想出正确的算法。
请高手指教。
针对excel2007以上版本的,最大列XFD。 展开
What = InputBox("请输入数字")
k = CInt(What) \ 26
j = CInt(What) Mod 26
If k <= 26 Then
If j = 0 Then
If k = 1 Then
MsgBox Chr(90)
Else
MsgBox Chr(65 - 2 + k) & Chr(90)
End If
Else
If k = 0 Then
MsgBox Chr(65 - 1 + j)
Else
MsgBox Chr(65 - 1 + k) & Chr(65 - 1 + j)
End If
End If
End If
If j = 0 And k = 27 Then MsgBox Chr(90) & Chr(90)
Cells(1, CInt(What)).Activate
End Sub
我只能写到ZZ。
三位字母列的,绞尽脑汁也无法想出啊。我有些怀疑用这种方法能不能做出来?
还是我没想出正确的算法。
请高手指教。
针对excel2007以上版本的,最大列XFD。 展开
展开全部
一定要用这种方法可以试试下面这个function,2010通过。
Function
ConvertToLetter(iCol
As
Integer)
As
String
Dim
iAlpha
As
Integer
Dim
iColTemp
As
Integer
Dim
i
As
Integer
If
iCol
>
702
Then
i
=
26
iColTemp
=
iCol
-
26
^
2
*
i
While
iColTemp
<
27
i
=
i
-
1
iColTemp
=
iCol
-
26
^
2
*
i
ConvertToLetter
=
Chr(i
+
64)
Wend
iCol
=
iColTemp
End
If
iAlpha
=
(iCol
-
1)
\
26
Select
Case
iAlpha
Case
0
Case
Else
ConvertToLetter
=
ConvertToLetter
&
Chr(64
+
iAlpha)
End
Select
ConvertToLetter
=
ConvertToLetter
&
Chr(64
+
((iCol
-
1)
Mod
26)
+
1)
End
Function
另外,如果你只是想获取单元格列标,可以使用下面的代码,应该是最简单直接的。
GetColumn
=
Split(Cells(1,
C).Address,
"$")(1)
‘C
是列号
Function
ConvertToLetter(iCol
As
Integer)
As
String
Dim
iAlpha
As
Integer
Dim
iColTemp
As
Integer
Dim
i
As
Integer
If
iCol
>
702
Then
i
=
26
iColTemp
=
iCol
-
26
^
2
*
i
While
iColTemp
<
27
i
=
i
-
1
iColTemp
=
iCol
-
26
^
2
*
i
ConvertToLetter
=
Chr(i
+
64)
Wend
iCol
=
iColTemp
End
If
iAlpha
=
(iCol
-
1)
\
26
Select
Case
iAlpha
Case
0
Case
Else
ConvertToLetter
=
ConvertToLetter
&
Chr(64
+
iAlpha)
End
Select
ConvertToLetter
=
ConvertToLetter
&
Chr(64
+
((iCol
-
1)
Mod
26)
+
1)
End
Function
另外,如果你只是想获取单元格列标,可以使用下面的代码,应该是最简单直接的。
GetColumn
=
Split(Cells(1,
C).Address,
"$")(1)
‘C
是列号
展开全部
一定要用这种方法可以试试下面这个function,2010通过。
Function ConvertToLetter(iCol As Integer) As String
Dim iAlpha As Integer
Dim iColTemp As Integer
Dim i As Integer
If iCol > 702 Then
i = 26
iColTemp = iCol - 26 ^ 2 * i
While iColTemp < 27
i = i - 1
iColTemp = iCol - 26 ^ 2 * i
ConvertToLetter = Chr(i + 64)
Wend
iCol = iColTemp
End If
iAlpha = (iCol - 1) \ 26
Select Case iAlpha
Case 0
Case Else
ConvertToLetter = ConvertToLetter & Chr(64 + iAlpha)
End Select
ConvertToLetter = ConvertToLetter & Chr(64 + ((iCol - 1) Mod 26) + 1)
End Function
另外,如果你只是想获取单元格列标,可以使用下面的代码,应该是最简单直接的。
GetColumn = Split(Cells(1, C).Address, "$")(1) ‘C 是列号
Function ConvertToLetter(iCol As Integer) As String
Dim iAlpha As Integer
Dim iColTemp As Integer
Dim i As Integer
If iCol > 702 Then
i = 26
iColTemp = iCol - 26 ^ 2 * i
While iColTemp < 27
i = i - 1
iColTemp = iCol - 26 ^ 2 * i
ConvertToLetter = Chr(i + 64)
Wend
iCol = iColTemp
End If
iAlpha = (iCol - 1) \ 26
Select Case iAlpha
Case 0
Case Else
ConvertToLetter = ConvertToLetter & Chr(64 + iAlpha)
End Select
ConvertToLetter = ConvertToLetter & Chr(64 + ((iCol - 1) Mod 26) + 1)
End Function
另外,如果你只是想获取单元格列标,可以使用下面的代码,应该是最简单直接的。
GetColumn = Split(Cells(1, C).Address, "$")(1) ‘C 是列号
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Sub find()
what = InputBox("请输入数字")*1
set mc=cells(1,what)
msgbox mid(mc.address,2,len(mc.address)-3)
Cells(1, CInt(What)).Activate
End Sub
晕,被LZ的VBA坑了,想天边去了。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-27 · 知道合伙人软件行家
关注
展开全部
点“工具”-----选项----常规----勾选“R1C1引用式样-----确定。列标A、B、C.....就变成1、2、3...了。
没看清题,答错了。不必在意。
没看清题,答错了。不必在意。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
换个思路呗!用case 1 to 26,case 27 to 676,顺推,这样就能往后写四位,五位甚至更高位数了吧!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |