如何在Excel中替换特定的未知字符?

时间:2013-12-04 16:02:48

标签: excel replace

我正在使用Excel 2013,而我正在尝试进行相当复杂的文本转换。它是这样的:假设我有以下字符串:

  • user_id
  • profile_type_new
  • user_refNumber
  • campaign_period2

我正在尝试做的是找到一种方法:

  1. 在下划线后立即获取字符并将其转换为大写(_id变为_Id,_period2变为_Period2)。
  2. 之后,删除下划线。
  3. 作为参考,字符串应该像这样结束:

    • userId
    • profileTypeNew
    • userRefNumber
    • campaignPeriod2

    我一直在努力寻找能够做到这一点的功能(或一组功能),而没有成功。任何人都可以指出我正确的方向或提供一些如何实现这一目标的例子吗?

    提前致谢,

    莱斯特

3 个答案:

答案 0 :(得分:4)

=SUBSTITUTE(PROPER(A1),"_","")

首先,将其转换为正确的情况。 Proper(A1)
然后,删除所有下划线。 SUBSTITUTE(......,"_","")

答案 1 :(得分:1)

怎么样:

Sub XformData()
    Dim r As Range, U As String, N As Long
    U = "_"
    For Each r In ActiveSheet.UsedRange
        If r.Value <> "" Then
            s = r.Value
            N = InStr(1, s, U)
            If N <> 0 Then
                r.Value = Mid(s, 1, N - 1) & UCase(Mid(s, N + 1, 1)) & Mid(s, N + 2)
            End If
        End If
    Next r
End Sub

答案 2 :(得分:0)

事实证明我必须编写自己的VBA函数来实现它。感谢所有指出我正确方向的人。

仅供参考,这是功能:

Public Function CamelCase(ByVal text As String) As String
    Dim temp, loopresult As String
    Dim i As Integer
    Dim capitalize As Boolean
    For i = 1 To Len(text)
        temp = Mid(text, i, 1)
        If i = 1 Then
            loopresult = loopresult & LCase(temp)
        ElseIf temp = "_" Then
            capitalize = True
        ElseIf IsNumeric(temp) Then
            loopresult = loopresult & temp
            capitalize = True
        ElseIf capitalize = True Then
            loopresult = loopresult & UCase(temp)
            capitalize = False
        Else
            loopresult = loopresult & temp
        End If
    Next i
    CamelCase = loopresult
End Function