有没有一种方法可以将一个单元格中的三个名称转换为两个单元格?
例如,A1“ John Dory”变为A1“ John” B1“ Dory”。问题是当有三个单词(中间名)时,它会自动为三个单元格执行操作。如果它可以是A1或B1中的中间名,那将是很好的。
Selection.TextToColumns Destination:=Range("F1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
最佳答案
我不确定您是否可以使用Text to Columns
方法,以使分隔符多次出现。
此代码将采用Column A
中的值并在Column B
中返回名字,并在Column C
中返回名字和姓氏
说明
从第2行到最后一行(Arr
)加载数组(LRow
)
使用Excel函数Left
和Right
提取所需的字符串。 InStr
是Excel函数Search
的VBA版本。 Chr(32)
只是用于空间的chr代码
在相应行上输出值。由于数组默认的第一个索引为0,因此在将索引与行号相关联时,您将需要使用i + 1
,否则所有值都将偏移1。
根据需要调整列,并在第三行上调整工作表名称。这也假设存在单行标头
Sub Custom_Delim()
Dim i As Long, LRow As Long, Arr
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
LRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
Arr = ws.Range("A2:A" & LRow).Value
Application.ScreenUpdating = False
For i = LBound(Arr) To UBound(Arr)
ws.Range("B" & i + 1) = Left(Arr(i, 1), InStr(Arr(i, 1), Chr(32)) - 1)
ws.Range("C" & i + 1) = Right(Arr(i, 1), Len(Arr(i, 1)) - InStr(Arr(i, 1), Chr(32)))
Next i
Application.ScreenUpdating = True
End Sub
关于excel - 将三个单词的字符串转换为两个字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53091804/