求vba中数字和字母的互相转换

 我来答
2724421
2012-04-29 · TA获得超过2493个赞
知道大有可为答主
回答量:1551
采纳率:71%
帮助的人:989万
展开全部
是A到Z 相应的转换为1到26,或者1到26相应的转换为A到Z? (不区分大小写字母)
给你个自定义函数,用法同excel 内置函数的语法.
例如:A1单元格内容是C 在单元格B1中输入=CSN(A1) 得到的结果是3
A1单元格内容是5,在单元格B1中输入=CSN(A1) 得到的结果是e
A1单元格内容是5,在单元格B1中输入=CSN(A1,1)得到的结果是E
注意:自定义函数的代码必须放在模块里
代码如下:
Function CSN(char As Variant, Optional n As Integer)
'n为可选参数,等于1时转换为大写字母,n等于其他任意值或者省略该参数转换为小写字母
If IsNumeric(char) Then
char = IIf(n = 1, char + 64, char + 96)
Select Case char
Case 65 To 90, 97 To 122
CSN = Chr(char)
Case Else
CSN = "数字超范围"
End Select
Else
If Len(char) = 1 Then
If char Like "[A-Z,a-z]" Then
a = Asc(char)
CSN = IIf(a < 91, a - 64, a - 96)
Else
CSN = "不是字母"
End If
Else
CSN = "字符太多"
End If
End If
End Function
明月无心恋落花
2021-03-24
知道答主
回答量:1
采纳率:0%
帮助的人:539
展开全部
字母支持A到ZZ
你应该会十进制和二进制的转化吧,你的问题本质是把10进制的数字转化为26进制的。从A到Z分别表示1到26。 我们只需两个参数,分别标识26进制数的两位数。然后把i和j通过chr(64+i)或chr(64+i)转换就行了。需要注意的是,当j=0时,j=26 i=i-1
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ECDAP
2017-06-04 · TA获得超过983个赞
知道小有建树答主
回答量:286
采纳率:0%
帮助的人:205万
展开全部
'====================================
'名称: CSN
'功能: 把列 字母和数字相互转化(最大支持702,ZZ)
'====================================

Private Function CSN(Col)
Dim i, j, si, sj
If IsNumeric(Col) Then
j = Col Mod 26: i = (Col - j) / 26: If j = 0 Then j = 26
If i > 0 Then CSN = Chr(64 + i) & Chr(64 + j) Else CSN = Chr(64 + j)
Else
If Len(Col) = 1 Then sj = Col Else si = Mid(Col, 1, 1): sj = Mid(Col, 2, 1)
If si <> "" Then i = Asc(si) - 64
If sj <> "" Then j = Asc(sj) - 64
CSN = 26 * i + j
End If
End Function
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ykduck19890312
2012-04-28
知道答主
回答量:5
采纳率:0%
帮助的人:3万
展开全部
没太明白问题意思,键盘上的字母有对应的ASCII码,和自己对应的数字建立一下关系就好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式