作者:绿色风
分类:
时间:2022-08-17
浏览:126
楼主 gouweicao78 |
Q:怎样用自定义函数取得英文人名或语句中每个单词(以空格间隔)的首个字母缩写,如:John Walkenbach 变为:JW A:按Alt+F11,插入→模块→在VBE窗口中输入以下代码:
- Function SX(x As String) As String
- Dim s As String
- Dim i As Integer
- x = " " & Trim(x)
- s = ""
- For i = 1 To Len(x)
- If Mid(x, i, 1) = " " Then
- s = s & Mid(x, i + 1, 1)
- End If
- Next i
- SX = s
- End Function
然后在A1单元格输入需要缩写的文本,在其他单元格输入=SX(A1)即可。 自定义函数(取缩写).rar |
2楼 syz105729913 |
陈哥要进入VBA领域了,哈哈,代码给你优化下- Function SX(x As String) As String
- Dim i As Integer
- For i = 1 To Len(x)
- SX = SX & IIf(i = 1, Mid(x, 1, 1), IIf(Mid(x, i, 1) = " ", Mid(x, i + 1, 1), ""))
- Next
- End Function
|
3楼 gouweicao78 |
谢谢。没那么严重说进军吧,偶尔小改一下代码而已,呵呵。 |
4楼 水星钓鱼 |
呵呵,参合下,明晚再来仔细学习- Function RetIniWod(text As String) As String
- Dim arr1
- Dim arr2(1000)
- Dim i As Long
- arr1 = Split(text)
- For i = 0 To UBound(arr1)
- arr2(i) = Left(arr1(i), 1)
- Next
- RetIniWod = Join(arr2, "")
- End Function
|
5楼 水星钓鱼 |
修改下我的代码。- Function RetIniWod(text As String) As String
- Dim arr1
- Dim arr2()
- Dim i As Long
- Dim j As Long
- '将字符串按照空格分隔成数组arr1的每个元素
- arr1 = Split(text)
- '获取数组arr1的上界
- j = UBound(arr1)
- '重新定义动态数组arr2,使它与arr1的元素个数相同
- ReDim arr2(j)
- '利用一个循环提取每个元素的首字母
- For i = 0 To j
- arr2(i) = Left(arr1(i), 1)
- Next
- '连接所有元素的首字母
- RetIniWod = Join(arr2, "")
- End Function
|
6楼 lanye205 |
好好学习 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一