【问题标题】:Capitalise first letter of words without changing currently Capitalised大写单词的第一个字母而不改变当前大写
【发布时间】:2012-11-20 10:24:33
【问题描述】:

我在 Excel 中有一些文本项,并且我喜欢将每个单词的第一个字母大写。但是,很多文本都包含短语“IT”,并且使用当前的大写方法(PROPER)将其更改为“It”。有没有办法只将每个单词的第一个字母大写而不将每个单词中的其他字母大写?

【问题讨论】:

  • 我想将每个单元格中每个单词的首字母大写
  • 替换当前值,还是在新单元格中?

标签: excel vba capitalization


【解决方案1】:

这里是VBA方式,添加到模块中&=PrefixCaps("A1")

Public Function PrefixCaps(value As String) As String
    Dim Words() As String: Words = Split(value, " ")
    Dim i As Long
    For i = 0 To UBound(Words)
        Mid$(Words(i), 1, 1) = UCase$(Mid$(Words(i), 1, 1))
    Next
    PrefixCaps = Join(Words, " ")
End Function

【讨论】:

  • +1 用于 LHS Mid$。我建议你在你的Split 中添加一个TRIM 以适应意外空间
【解决方案2】:

【讨论】:

    【解决方案3】:

    这有点复杂,但我确实发现如果您的电子表格非常简单,您可以将其复制并粘贴到 word 中并使用它的编辑功能,然后将其复制并粘贴回 Excel。对我来说效果很好。

    【讨论】:

      【解决方案4】:

      修复文本中的双空格:

          Public Function PrefixCaps(value As String) As String
          Dim Words() As String: Words = Split(value, " ")
          Dim i As Long
          For i = 0 To UBound(Words)
              If Len(Words(i)) > 0 Then
                  Mid$(Words(i), 1, 1) = UCase$(Mid$(Words(i), 1, 1))
              End If
          Next
          PrefixCaps = Join(Words, " ")
      End Function`
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-29
        相关资源
        最近更新 更多