我有一张这么多行的表格。它的结构就像这张图片:
正如你所看到的,我在列A中的名字之间有“或”,“和”。我如何将这些列分成两部分?在这种情况下,我将在第一列中拥有David,Tylor,Fred,Jessi,Roland以及第二列中的Peter,Mark,Alfered,Hovard和DAvid。
注意:请注意第2行和第5行。在这些行中我有2“或”或两个“和”。
修改:我更喜欢在Excel中执行此操作
我尝试过什么
作为一种可能的解决方案,我在vba中有这个功能。
Function udfRegEx(CellLocation As Range, RegPattern As String)
Dim RegEx As Object, RegMatchCollection As Object, RegMatch As Object
Dim OutPutStr As String
Dim i As Integer
i = ActiveWorkbook.Worksheets(ActiveWorksheet.Name).UsedRange.rows.Count
Set RegEx = CreateObject("vbscript.regexp")
With RegEx
.Global = True
.Pattern = RegPattern
End With
OutPutStr = ""
Set RegMatchCollection = RegEx.Execute(CellLocation.Value)
For Each RegMatch In RegMatchCollection
OutPutStr = OutPutStr & RegMatch
Next
udfRegEx = OutPutStr
Set RegMatchCollection = Nothing
Set RegEx = Nothing
Set Myrange = Nothing
End Function
此功能使用Regex。但我不知道如何使用它。
答案 0 :(得分:2)
正如我所说,你不需要VBA。 Excel公式也可以满足您的需求。
我的假设
将此公式粘贴到单元格B1中并将其复制
=IF(ISERROR(SEARCH(" or ",A1,1))=TRUE,IF(ISERROR(SEARCH(" and ",A1,1))=TRUE,"",LEFT(A1,SEARCH(" and ",A1,1))),LEFT(A1,SEARCH(" or ",A1,1)))
并在Cell C1中将其复制下来
=IF(ISERROR(SEARCH(" or ",A1,1))=TRUE,IF(ISERROR(SEARCH(" and ",A1,1))=TRUE,"",MID(A1,SEARCH(" and ",A1,1)+5,LEN(A1)-SEARCH(" and ",A1,1))),MID(A1,SEARCH(" or ",A1,1)+4,LEN(A1)-SEARCH(" or ",A1,1)))
<强>快照强>
答案 1 :(得分:1)
(\w)+(( or | and ){0,1}(\w)+)*
答案 2 :(得分:1)
它不是一个编码解决方案,但由于你没有要求代码(因为在这种情况下它不是必需的),只需在单词“and”和“或”上进行查找/替换,用一些分隔符替换它们(例如用逗号替换它们)。然后在excel中,您可以选择数据,并使用excels“text to columns”功能(在excel 2007的数据选项卡上)将它们拆分为不同的列。