ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何定义英文单词首字母缩写的自定义函数?

如何定义英文单词首字母缩写的自定义函数?

作者:绿色风 分类: 时间:2022-08-17 浏览:87
楼主
gouweicao78
Q:怎样用自定义函数取得英文人名或语句中每个单词(以空格间隔)的首个字母缩写,如:John Walkenbach 变为:JW
A:按Alt+F11,插入→模块→在VBE窗口中输入以下代码:

  1. Function SX(x As String) As String
  2.     Dim s As String
  3.     Dim i As Integer
  4.     x = " " & Trim(x)
  5.     s = ""
  6.         For i = 1 To Len(x)
  7.         If Mid(x, i, 1) = " " Then
  8.         s = s & Mid(x, i + 1, 1)
  9.         End If
  10.         Next i
  11.     SX = s
  12. End Function
然后在A1单元格输入需要缩写的文本,在其他单元格输入=SX(A1)即可。
自定义函数(取缩写).rar
2楼
syz105729913
陈哥要进入VBA领域了,哈哈,代码给你优化下
  1. Function SX(x As String) As String
  2. Dim i As Integer
  3. For i = 1 To Len(x)
  4. SX = SX & IIf(i = 1, Mid(x, 1, 1), IIf(Mid(x, i, 1) = " ", Mid(x, i + 1, 1), ""))
  5. Next
  6. End Function
3楼
gouweicao78
谢谢。没那么严重说进军吧,偶尔小改一下代码而已,呵呵。
4楼
水星钓鱼
呵呵,参合下,明晚再来仔细学习
  1. Function RetIniWod(text As String) As String
  2. Dim arr1
  3. Dim arr2(1000)
  4. Dim i As Long
  5. arr1 = Split(text)
  6. For i = 0 To UBound(arr1)
  7.     arr2(i) = Left(arr1(i), 1)
  8. Next
  9. RetIniWod = Join(arr2, "")
  10. End Function
5楼
水星钓鱼
修改下我的代码。
  1. Function RetIniWod(text As String) As String
  2. Dim arr1
  3. Dim arr2()
  4. Dim i As Long
  5. Dim j As Long
  6. '将字符串按照空格分隔成数组arr1的每个元素
  7. arr1 = Split(text)
  8. '获取数组arr1的上界
  9. j = UBound(arr1)
  10. '重新定义动态数组arr2,使它与arr1的元素个数相同
  11. ReDim arr2(j)
  12. '利用一个循环提取每个元素的首字母
  13. For i = 0 To j
  14.     arr2(i) = Left(arr1(i), 1)
  15. Next
  16. '连接所有元素的首字母
  17. RetIniWod = Join(arr2, "")
  18. End Function
6楼
lanye205
好好学习

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap