如何在 Excel 中将文本字符串转换为带例外情况的正确大小写?

ms excelmicrosoft technologiescomputers更新于 2025/2/24 23:08:17

您是否想过,Excel 中是否有办法自动更正句子中字符串的大小写?在 Excel 中可以实现这一点。本教程将帮助您了解如何在 Excel 中将文本字符串转换为带例外情况的正确大小写。由于 Excel 无法直接完成此任务,因此我们可以使用 VBA 应用程序来完成。当单词的字母大小写符合语法要求时,它们被称为"正确大小写"。

在 Excel 中将文本字符串转换为带例外情况的正确大小写

在这里,我们将首先创建例外情况列表,然后插入 VBA 模块并运行它来完成任务。让我们看一个在 Excel 中将字符串转换为正确大小写(包含异常)的简单过程。

步骤 1

假设有一个 Excel 工作表,其数据表类似于下图所示的数据。

然后右键单击工作表名称,并选择"查看代码"以打开 VBA 应用程序。然后点击"插入"并选择"模块"。

右键单击 >"查看代码">"插入">"模块"

步骤 2

在文本框中输入以下程序代码,如下图所示。

程序

Sub CellsValueChange()
'Update By Nirmal
    Dim xSRg As Range
    Dim xDRg As Range
    Dim xPRg As Range
    Dim xSRgArea As Range
    Dim xRgVal As String
    Dim xAddress As String
    Dim I As Long
    Dim K As Long
    Dim KK As Long
    On Error Resume Next
    xAddress = Application.ActiveWindow.RangeSelection.Address
    Set xSRg = Application.InputBox("Original cells:", "Proper Text String", xAddress, , , , , 8)
    If xSRg Is Nothing Then Exit Sub
    Set xDRg = Application.InputBox("Output cells:", "Proper Text String", , , , , , 8)
    If xDRg Is Nothing Then Exit Sub
    Set xPRg = Application.InputBox("Cells to exclude:", "Proper Text String", , , , , , 8)
    If xPRg Is Nothing Then Exit Sub
    Set xDRg = xDRg(1)
    For I = 1 To xSRg.Areas.Count
        Set xSRgArea = xSRg.Areas.Item(I)
        For K = 1 To xSRgArea.Count
            xRgVal = xSRgArea(K).Value
            If Not IsNumeric(xRgVal) Then
                xRgVal = CorrectCase(xRgVal, xPRg)
                xDRg.Offset(KK).Value = xRgVal
            End If
            KK = KK + 1
        Next
    Next
End Sub
Function CorrectCase(ByVal xRgVal As String, ByVal xPRg As Range) As String
    Dim xArrWords As Variant
    Dim I As Integer
    Dim xPointer As Integer
    Dim xVal As String
    xPointer = 1
    xVal = xRgVal
    xArrWords = WordsOf(xRgVal)
    For I = 0 To UBound(xArrWords)
        xPointer = InStr(xPointer, " " & xVal, " " & xArrWords(I))
        Debug.Print xPointer
        Mid(xVal, xPointer) = CorrectCaseOneWord(CStr(xArrWords(I)), xPRg)
    Next I
    CorrectCase = xVal
End Function
Function WordsOf(xRgVal As String) As Variant
    Dim xDelimiters As Variant
    Dim xArrRtn As Variant
    xDelimiters = Array(",", ".", ";", ":", Chr(34), vbCr, vbLf)
    For Each xEachDelimiter In xDelimiters
        xRgVal = Application.WorksheetFunction.Substitute(xRgVal, xEachDelimiter, " ")
    Next xEachDelimiter
    xArrRtn = Split(Trim(xRgVal), " ")
    WordsOf = xArrRtn
End Function
Function CorrectCaseOneWord(xArrWord As String, xERg As Range) As String
    With xERg
        If IsError(Application.Match(xArrWord, .Cells, 0)) Then
            CorrectCaseOneWord = Application.Proper(xArrWord)
        Else
            CorrectCaseOneWord = Application.VLookup(xArrWord, .Cells, 1, 0)
        End If
    End With
End Function

步骤 3

现在将工作表保存为启用宏的工作簿,并点击 F5 运行代码。然后选择原始数据的范围并点击"确定"。

步骤 4

再次选择需要输出的单元格,然后点击"确定"。

步骤 4

最后,选择例外情况的范围并点击"确定"。

结论

在本教程中,我们使用了一个简单的示例演示如何在 Excel 中将文本字符串转换为有例外的正确大小写。


相关文章


有用资源