电子表格:如果列包含某个字符串,则拆分该列

电子表格:如果列包含某个字符串,则拆分该列

以下是我的电子表格的摘录: 在此处输入图片描述

请注意:这只是一个简化的示例。我的完整电子表格有很多列和超过 10,000 行。

在我的电子表格中,经常会出现一些行包含以 开头的方括号内的文本LIT:(如图所示)。

是否可以自动提取该文本并将其放在电子表格的单独列中?

(例如,在上面的例子中,[Lit: Next of hotel]将进入单独的列,但仍保留在同一行)。 


注意:如示例所示,并非每一行都有 [Lit:] 示例。

我目前正在使用 Apple Pages。但如果可以的话,我很乐意尝试 Google Docs 或 Open Office,或者其他软件包。

答案1

您的示例对于所需字符串是否以[LIT:或开头存在冲突[Lit:。我假设大写的[LIT:

在 LibreOffice(大概还有其他 Excel 等效程序,尽管我不知道 Apple Pages 或 Google Docs)中,该函数允许您在文本字段中定位子字符串,但如果未找到子字符串,它会返回错误,所以您也FIND()需要使用。IFERROR()

我首先考虑一个简单的例子,其中任何[LIT:字段始终位于字符串的末尾,并以]作为最后一个字符。如果数据位于列中A,从开始A1,则以下公式将执行您想要的操作:

=IFERROR(MID(A1,FIND("[LIT:",A1),LEN(A1)),"")

这里如果FIND()返回一个值,那么就返回从该位置到字符串末尾的子字符串;否则,FIND()就会MID()产生错误,并返回一个空字符串。

在更复杂的情况下,[LIT:字段可能出现在字符串的中间,必须详细说明公式:

=IFERROR(MID(A1,FIND("[LIT:",A1),FIND("]",MID(A1,FIND("[LIT:",A1),LEN(A1)))),"")

在这种情况下,找到了字符串末尾的子字符串[LIT:,但是从原始单元格生成的字符数受到]子字符串内位置的限制;同样,任何错误都会生成一个空白字符串。

无论使用哪种公式,您都可以复制其所在的单元格并将其粘贴到列的其余部分。如果您需要处理 或[LIT:[Lit:则将其替换FIND("[LIT:",A1)SEARCH("\[L[Ii][Tt]:",A1):而FIND()查找文字、区分大小写的匹配,SEARCH()使用正则表达式匹配。

如果需要[LIT:从原始列中删除子字符串A,则将提取的[LIT:字段放入列中C,然后放入B1

=SUBSTITUTE(A1,C1,"",1)

现在将其复制到列的其余部分B并隐藏列A。当然可以使用任何列和起始行;在我的示例中,我使用了没有标题行的相邻列。

请注意,=SUBSTITUTE()不会产生错误,因此无需使用IFERROR()

相关内容