所以基本上我有一个有名字的单元格“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等等。
1条答案
按热度按时间gupuwyp21#
这段代码根据空格所在的位置来拆分名称(因此不完全是根据问题标题的大写字母)。要使用这段代码,请删除从
SplitWords = Left(Name , 1)
到Next
(包括SplitWords = Left(Name , 1)
和Next
)这一行的所有代码,并将其替换为:这段代码假设您的
Name
变量中正确地设置了一个名称...我无法检查,因为我没有sheet1
和sheet2
中的数据副本。它还假设没有任何名称包含超过5个单独的单词......如果超过,则增加在
WS1.Range("C19:C23").ClearContents
行中清除的行数。这确保了没有单独的单词从先前处理的名称中留下(如果先前处理的名称包含更多单独的单词)。