Excel VBA按大写字母拆分单元格内容并将结果粘贴到多个单元格中

nbnkbykc  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(180)

所以基本上我有一个有名字的单元格“John Smith”和我想有一个按钮,将名称拆分为2个或更多个片段(取决于中间名),并将它们粘贴到另一个单元格中。
我有下面的代码目前,但我不知道我在做什么LOL任何帮助将不胜感激:)

Private Sub Splitnames_Click()
    Dim I As Integer
    Dim WS1 As Worksheet: Set WS1 = Worksheets("sheet1")
    Dim WS2 As Worksheet: Set WS2 = Worksheets("sheet2")
    MyValue = InputBox("Please enter employee name...", "Import employee", "Enter employee name here...")
    WS1.Range("E44").Value = MyValue
    Dim FoundCell As Range: Set FoundCell = WS2.Range("A2:A1000").Find(WS1.Range("E44").Value, LookIn:=xlValues, LookAt:=xlPart)
    If FoundCell Is Nothing Then
        Set FoundCell = Nothing
        Set WS1 = Nothing
        Set WS2 = Nothing
        MsgBox "No Employee found!"
        Exit Sub
    Else
    Name = FoundCell.Offset(rowOffset:=0, columnOffset:=16).Value
    SplitWords = Left(Name , 1)
    For I = 2 To Len(Trim(Name ))
        If (Asc(Mid(Name , I, 1)) > 64) And _
           (Asc(Mid(Name , I, 1)) < 91) And _
           (Mid(Name , I - 1, 1) <> " ") Then _
            SplitWords = SplitWords & " "
        SplitWords = SplitWords & Mid(Name , I, 1)
        WS1.Range("C19") = SplitWords
    Next
    End If
    Set FoundCell = Nothing
    Set WS1 = Nothing
    Set WS2 = Nothing
End Sub

我尝试了上面的代码,但是我找不到一种方法来粘贴结果到多个单元格。我需要一种方法来粘贴结果到Sheet1,单元格C19,然后C20,然后C21等等。

gupuwyp2

gupuwyp21#

这段代码根据空格所在的位置来拆分名称(因此不完全是根据问题标题的大写字母)。要使用这段代码,请删除从SplitWords = Left(Name , 1)Next(包括SplitWords = Left(Name , 1)Next)这一行的所有代码,并将其替换为:

Dim nameArray As Variant
    nameArray = Split(Name, " ")
    WS1.Range("C19:C23").ClearContents
    If UBound(nameArray) >= 0 Then
        WS1.Range("C19").Resize(UBound(nameArray) + 1) = WorksheetFunction.Transpose(nameArray)
    End If

这段代码假设您的Name变量中正确地设置了一个名称...我无法检查,因为我没有sheet1sheet2中的数据副本。
它还假设没有任何名称包含超过5个单独的单词......如果超过,则增加在WS1.Range("C19:C23").ClearContents行中清除的行数。这确保了没有单独的单词从先前处理的名称中留下(如果先前处理的名称包含更多单独的单词)。

相关问题