Excel分裂的名称和单词

时间:2013-11-11 22:59:54

标签: excel

问题是:我想将文本中的所有名称和角色分成不同的列: 即(Janu Dowe(Lead AM); Ron Peno(备份AT); Alex Nano(备份AT)。

我想把它分开“Janu Dowe”一栏,角色:“Lead AM”等。 在一个单元格中有3个有时4个名称和角色,我希望它在单独的列中分开。 我尝试了几种方法。 谢谢

3 个答案:

答案 0 :(得分:1)

如果您的数据真的是您的代表方式

  

名称(角色);名称(角色);名称(角色)

名称可以是一个或多个单词;角色总是括在括号中,名称(角色)组用分号分隔,然后下面的宏应该完成这项工作。

宏假设您的数据位于A列中,从A1开始,并且相邻列中没有任何值。如果不是这样,您将需要更改代码。

要输入此宏(子),alt-F11将打开Visual Basic编辑器。 确保在Project Explorer窗口中突出显示您的项目。 然后,从顶部菜单中选择“插入/模块” 将下面的代码粘贴到打开的窗口中。

要使用此宏(子),alt-F8将打开宏对话框。按名称选择宏,然后运行。

Option Explicit
Sub SplitData()
Dim r As Range, c As Range
Set r = Range("P36", Cells(Rows.Count, "P").End(xlUp))
For Each c In r
c.TextToColumns DataType:=xlDelimited, semicolon:=True, other:=True, _
    otherchar:="("
Next c

Set r = r.CurrentRegion
r.Replace what:=")", replacement:="", lookat:=xlPart
r.EntireColumn.AutoFit
End Sub

这可以手动完成,但宏可能更简单。宏首先执行TextToColumns方法,使用分号和“(”作为分隔符;然后它使用Replace方法删除残差“)”

答案 1 :(得分:0)

如果第1列是

Alex isa Nano(备份AT); Ron Peno(备份AT); Janu Dowe Smyth(领导AM)

然后解析如下     = LEFT(A1,FIND( “(”,A1)-2)     = MID(A1,FIND( “(”,A1)1,(FIND( “)”,A1) - 查找( “(”,A1)) - 1)     = MID(A1,FIND( “;”,A1)+ 2,FIND( “(”,A1,FIND( “;”,A1)) - FIND( “;”,A1)-2)     = MID(A1,FIND( “(”,A1,FIND( “;”,A1))+ 1,FIND( “)”,A1,FIND( “;”,A1)) - FIND( “(”,A1 ,FIND( “;”,A1)) - 1)     = MID(A1,FIND( “)”,A1,FIND( “;”,A1))+ 3,FIND( “(”,A1,FIND( “;”,A1,FIND( “;”,A1)+ 1)) - FIND( “;”,A1,FIND( “;”,A1)1)-2)     = MID(A1,FIND( “(”,A1,FIND( “;”,A1,FIND( “;”,A1)+1))+ 1,LEN(A1) - 查找( “(”,A1,FIND ( “;”,A1,FIND( “;”,A1)+1)) - 1)

答案 2 :(得分:0)

在数据显示如何在单元格P36:P37中的工作表中输入数据之前

Data as Entered Originally

在宏之后,在P36中显示结果:U37;分裂成细胞

如果这不是您想要的,则需要更具描述性

Data after macro is run