【发布时间】:2023-01-12 18:11:13
【问题描述】:
下面是非常简单的公式,但我缺少一些理解,而且看起来简单得令人沮丧。
非常简单的文本提取:
MID(A1,Start Num, Num of Chars)
一个简单的公式文本查找公式,
SEARCH(Find_text, within_text, start_num)
结合这两个公式可以从两个文本字符之间的字段中查找和提取文本,例如“下划线”、“括号”、“逗号”
所以例如提取
要提取的文本 >>> Jimbo Jones
从包含括号的单元格中可以得到一个简单的公式;
示例文本 A1 =事件报告编号 1234,用户 (Jimbo Jones) 状态-待定
公式;
=MID(A1, SEARCH("(", A1)+1, SEARCH(")", A1) - SEARCH("(", A1) -1)
提取的文本 =金博琼斯
逻辑很简单
1.识别包含文本的单元格
2.通过指定第一个可搜索字符来查找起始编号
3.通过搜索第二个可搜索字符找到正在提取的文本的结束编号
4.从结束号中减去开始号得到要提取的字符数
在不使用搜索公式的情况下,代码是;
MID=(A1,32,11) = Jimbo Jones
但是,如果我想在逗号或其他相同字符(例如引号、撇号、星号)之间提取文本,我需要使用以下公式(我发现这是建议的)
=MID(A1, SEARCH(",", A1)+1, SEARCH(",", A1, SEARCH(",", A1) +1) - SEARCH(",",A1) -1)
示例文本 A1事件报告编号 1234 用户 Jimbo Jones,状态待定
提取的文本 =金博琼斯
但是我如何指定其他边界,例如第 3 个和第 4 个逗号之间的文本?
示例文本 A1事件报告,No.1234,用户,Jimbo Jones,Status- pending
我感到困惑的原因是在上面的公式中,excel 找到了逗号的第二次迭代,无论它们在文本中的什么位置,但实际使用的公式与找到第一个逗号的公式相同,字符数似乎自动假设不知何故我想要第二个逗号而不是第一个逗号,我如何指示公式查找逗号的后续迭代,例如第 3、4 或第 9?
我不明白为什么公式找到第二个逗号?
干杯!
【问题讨论】:
-
我从您尝试的公式中假设您无权访问 O365 函数,例如
TEXTAFTER? -
在此处查看我如何使用 find()、mid() 和额外的 iferror():stackoverflow.com/a/75070705/4961700
-
回答为什么它找到第二个
,:它从找到第一个+1的地方开始查找它的位置 -
对于@JosWoolley 的新功能,我建议使用
TEXTAFTER()和TEXTBEFORE(),对于旧版本我会看一下FILTERXML()。如果您的问题只是提取定界符之间的第 n 个“单词/子字符串”,那么它之前已经被问过并且也包含在链接的帖子中(第二个示例“按位置排列的元素”)。 -
谢谢 P.b,好的,我明白了,[start_num] 找到第一个逗号,然后加上 +1 从那里开始搜索。
标签: excel excel-formula formula data-extraction