VBA 字母和数字互换,Cells和Range转换

这里给两个写好的函数

1.数字转为字母,输入数字即可转化为列号(这里最大到ZZ,注意传入要大写),比如:NumToLetter(28)="AB"

Function NumToLetter(num As Long) As String
Dim alphabet()
'a-z字母表
alphabet() = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z")
'判断列,字母拆分
If num <= 26 Then
    NumToLetter = alphabet(num - 1)
ElseIf num <= 729 Then
    NumToLetter = alphabet((num \ 26) - 1) & alphabet((num Mod 26) - 1)
End If
End Function

2.字母转为数字,输入列号即可转化为数字,比如:LetterToNum(AB)=28

Function LetterToNum(Letter As String) As Long
Dim alphabet As Variant
Dim i, num, num1, num2, num3 As Integer
Dim Letter1, Letter2, Letter3 As String
'a-z字母表
alphabet = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z")
If Len(Letter) = 1 Then
    For i = 0 To UBound(alphabet)
        If Letter = alphabet(i) Then
            num = i + 1
        End If
        LetterToNum = num
    Next
ElseIf Len(Letter) = 2 Then
    Letter1 = Left(Letter, 1)
    Letter2 = Right(Letter, 1)
    For i = 0 To UBound(alphabet)
        If Letter1 = alphabet(i) Then
            num1 = i + 1
        End If
    Next
    For i = 0 To UBound(alphabet)
        If Letter2 = alphabet(i) Then
            num2 = i + 1
        End If
    Next
    num = num1 * 26 + num2
    LetterToNum = num
ElseIf Len(Letter) = 3 Then
    Letter1 = Left(Letter, 1)
    Letter2 = Mid(Letter, 2, 1)
    Letter3 = Right(Letter, 1)
        Letter1 = Left(Letter, 1)
    Letter2 = Right(Letter, 1)
    For i = 0 To UBound(alphabet)
        If Letter1 = alphabet(i) Then
            num1 = i + 1
        End If
    Next
    For i = 0 To UBound(alphabet)
        If Letter2 = alphabet(i) Then
            num2 = i + 1
        End If
    Next
    For i = 0 To UBound(alphabet)
        If Letter3 = alphabet(i) Then
            num3 = i + 1
        End If
    Next
    num = num1 * 26 * 26 + num2 * 26 + num3
    LetterToNum = num
Else
    MsgBox "输入不正确"
End If
End Function

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: VBA中,CellsRange都是用来引用单元格的对象。它们的区别在于: 1. Cells是基于行列号来引用单元格的,例如Cells(1,1)表示第1行第1列的单元格,Cells(2,3)表示第2行第3列的单元格。 2. Range是基于单元格的地址来引用单元格的,例如Range("A1")表示A列第1行的单元格,Range("C5")表示C列第5行的单元格。 3. Range还可以引用多个单元格,例如Range("A1:B3")表示A1到B3这个矩形区域的单元格。 4. CellsRange都可以用来读取或修改单元格的值、格式、公式等属性。 总的来说,Cells更适合用于循环遍历单元格的情况,而Range更适合用于引用特定的单元格或区域。 ### 回答2: 在Excel VBA中,CellsRange都是用来引用Excel中单元格的对象。它们有很多相似的地方,但也有一些重要的区别。 首先,Cells属性是用数字行列坐标来指定单元格的位置,比如Cells(1,1)代表A1单元格,Cells(2,1)代表A2单元格。则Cells(n,m)代表第n行,第m列。而Range属性则可以使用字母列坐标来指定单元格的位置,比如Range("A1")代表A1单元格,Range("B2")代表B2单元格。则Range("A" & n)代表第n行第一列,Range(chr(64+m)+1)代表第一行第m列。 同时,Cells属性比较适合在循环或打印单元格内容时使用,而且可以使用相对位置,也就是说句点左侧字符是相对于当前活动单元格的。比如ActiveCell.Offset(1,4).Cells代表的是当前单元格下面一行的第5列单元格。而Range属性则比较适合选择单元格进行操作,比如合并单元格、设置边框等。 另外,Cells属性可以在单元格上进行一些简单的操作,比如设置单元格的值、颜色等属性。而Range属性则更适合对单元格范围进行操作,比如在多个单元格上设置相同的属性或公式。可以说在对单个单元格进行操作时,可以使用Cells属性来方便快捷地完成,而对于多个单元格的操作,Range属性则更加灵活方便。 总之,CellsRange都是Excel VBA中经常用到的对象,它们在引用单元格时各有优缺点,需要根据实际需求选择合适的对象。 ### 回答3: 在VBA中,CellsRange都是用于引用单元格或单元格区域的对象。虽然它们有一些相似之处,但它们也有一些重要的区别。 Cells是一个单元格的方法,可以通过指定行号和列号来引用单个单元格。比如,Cells(3, 2)代表的是第3行第2列的单元格。Cells可以使用数字或变量作为参数,这使得它非常灵活。此外,它可以用在for循环中,来遍历一个区域中的每一个单元格。 Range是一个单元格区域的对象,可以通过指定左上角和右下角单元格的地址来引用一组单元格。比如,Range("A1:C3")代表从A1到C3的单元格区域。Range可以用字符串或变量作为参数,因此也非常灵活。与Cells不同,Range通常用于处理大的单元格区域,如表格的列或行。 尽管CellsRange都可以用于引用单元格,但它们的使用场景有所不同。Cells更适用于处理单个单元格,它可以在代码中直接指定行号和列号,因此更加快捷。Range更适用于处理一组单元格,如表格与单元格之间的数据交互等,这种情况下Range的优势更加明显。 总之,在编写VBA代码时,需要根据具体业务场景来选择使用Cells还是Range对象,以达到更好的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今夕乃何夕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值