答案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()
。