问题是:我想将文本中的所有名称和角色分成不同的列: 即(Janu Dowe(Lead AM); Ron Peno(备份AT); Alex Nano(备份AT)。
我想把它分开“Janu Dowe”一栏,角色:“Lead AM”等。 在一个单元格中有3个有时4个名称和角色,我希望它在单独的列中分开。 我尝试了几种方法。 谢谢
答案 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中的工作表中输入数据之前
在宏之后,在P36中显示结果:U37;分裂成细胞
如果这不是您想要的,则需要更具描述性