excel - VBA:在字符串中的大写字母之后或之前放置一个空格

标签 excel string vba function uppercase

我有一系列代表客户姓名的文本,但每个单词/名称之间没有空格(例如:JohnWilliamsSmith)。但是,可以区分单词,因为每个单词的第一个字母都是大写的。

所以我需要将这个客户字符串列表转换为他们的常规范式,每个单词之间有空格。所以我希望 JohnWilliamsSmith 成为 John Williams Smith。但是,我想不出一个直接的方法来实现这一点,而且我相信 Excel 公式的任何组合都不能提供这种结果。

因此,我认为唯一的解决方案是设置一个宏。可能是 Function用作公式或模块中的代码来处理特定范围内的数据(假设列表位于 Range ("A2: A100") 中)。

有谁知道我该怎么做?

最佳答案

Function AddSpaces(PValue As String) As String

  Dim xOut As String
  xOut = VBA.Left(PValue, 1)

  For i = 2 To VBA.Len(PValue)
    xAsc = VBA.Asc(VBA.Mid(PValue, i, 1))

    If xAsc >= 65 And xAsc <= 90 Then
      xOut = xOut & " " & VBA.Mid(PValue, i, 1)
    Else
      xOut = xOut & VBA.Mid(PValue, i, 1)
    End If

  Next
  AddSpaces = xOut
End Function

注意:使用这个函数公式是 =Addspace(A1)。

关于excel - VBA:在字符串中的大写字母之后或之前放置一个空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43237341/

相关文章:

arrays - VBA - 匹配2个排序字符串数组,其中某些元素不匹配 - 优化

不能在 C 中将 sscanf() 用于字符数组

java - 为什么此代码接受字符串输入并输出 int 不起作用? java

javascript - 在网页上的登录表单中输入用户名和密码

excel - 如何在 VBA 类中使用私有(private)方法?

vba - 当变量设置为新对象时,VBA 对象是否会被销毁?

excel - 更改 Excel for Mac 的 VBE 的默认字体大小

c# - 如何使用脚本任务声明工作表?

java - 如何在eclipse中显示日文字符

vba - 如何在 Excel UDF 中强制使用参数