EXCEL和VBA如何改变字母大小写 和 大小写互换?我写的自定义函数

文章介绍了在Excel和VBA中如何转换字符串的大小写,包括内置函数如upper(),lower(),proper(),以及VBA的UCase(),LCase()。还讨论了数字和中文大小写的转换,并详细解释了如何使用ASCII码来实现字母大小写的互换,提供了一个自定义函数test_tran1()作为示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1 EXCEL里改变大小写的内置函数

2.1 转换大小写的函数

2.2 神奇的把数字和中文大小写转换的函数

2 VBA里改变大小写的内置函数

2.1 改变大小写 的内置函数

2.2 使用 excel的WorksheetFunction. text() 函数

3 如果想交换字母的大小写呢?

3.1 ASCII码里的大写字母和小写字母

3.2 怎么把字符串string 像数组一样切片呢?

3.3 VBA的 字符转ASCII码和 ASCII转字符的两个函数

3.4  自定义函数,大小写互换  test_tran1(a)


1 EXCEL里改变大小写的内置函数

2.1 转换大小写的函数

  • upper()         '全部改大写
  • lower()          '全部改小写
  • proper()        '首字母大写
  • code()          'excel里查看字母asc码的函数

2.2 神奇的把数字和中文大小写转换的函数

  • NUMBERSTRING()  
  • 参数只可选1,2,3

  • NUMBERSTRING(A8,1)       ' 转成小写汉字,且是数量单位
  • NUMBERSTRING(A8,2)       ' 转成大写汉字,且是数量单位
  • NUMBERSTRING(A8,3)       ' 转成小写汉字

 

2 VBA里改变大小写的内置函数

2.1 改变大小写 的内置函数

  • UCase()            '所有小写改大写
  • lCase()              '所有大写改小写
  • VBA里,使用 worksheetfuction.upper()   worksheetfuction.lower() 是不行的

2.2 使用 excel的WorksheetFunction. text() 函数

  • WorksheetFunction.Text(rng.Text, "[DBNum1]")
  • WorksheetFunction.Text(rng.Text, "[DBNum2]")

3 如果想交换字母的大小写呢?

目标:如果想大小写互换:也就是把大写字母改成小写,而小写字母改成大写,怎么做?

先理清思路

  • 搞清楚大写字母和小写字母的区别
  • 如何逐个从字符串数组里取每个字符?
  • 如何转化单个字符,且放回去?

3.1 ASCII码里的大写字母和小写字母

  • 搞清楚大写字母和小写字母的区别
  • 在 ASCII码里,大写字母和小写字母可以对应位不同区间段的数字
  • 大写字母A-Z, 65-90
  • 小写字母a-z, 97-122
  • 因此只要判断了这个字符的acsii码值,就知道其是大写还是小写!

3.2 怎么把字符串string 像数组一样切片呢?

  • python可以 string[1] 这样取
  • 但是vba里不行
  • 但是其实用 mid(string, i ,1 ) 也可以取每个字符

3.3 VBA的 字符转ASCII码和 ASCII转字符的两个函数

  • chr()            'ASCII转字符
  • asc()            '字符转ASCII码

3.4  自定义函数,大小写互换  test_tran1(a)

  • 搞清楚大写字母和小写字母的区别
  • 把字符串看成一个数组,
  • 如何逐个从字符串数组里取每个字符
  • 如何转化单个字符,且放回去
  • 取最后的结果
Function test_tran1(a)
  '好像vba里字符串不能直接这样切片a[],只能用 mid()?
  For i = 1 To Len(a)
       '用ASC() 而不是chr() 更不是WorksheetFunction.code
      If Asc(Mid(a, i, 1)) >= 97 And Asc(Mid(a, i, 1)) <= 122 Then
         Mid(a, i, 1) = UCase(Mid(a, i, 1))      '用这个不行worksheetfunction.upper()
      ElseIf Asc(Mid(a, i, 1)) >= 65 And Asc(Mid(a, i, 1)) <= 90 Then
         Mid(a, i, 1) = LCase(Mid(a, i, 1))
      End If
  Next
  test_tran1 = a
  Debug.Print a
End Function


Sub testtt1()
   a = "abcABC"
   test_tran1 (a)
End Sub

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值