excel MID公式使用SEARCH公式从单元格中提取文本

vcirk6k6  于 2023-01-14  发布在  其他
关注(0)|答案(2)|浏览(468)

非常简单的公式如下,但我错过了一些理解,它似乎令人沮丧的简单。
非常简单的文本提取:

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)

摘录文本=Jimbo Jones
道理很简单
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,状态-待定*
摘录文本=Jimbo Jones
但是我如何指定其他边界,例如第三和第四个逗号之间的文本?
示例文本A1
****事件报告,编号1234,用户,Jimbo Jones,状态-待定*****
我困惑的原因是在上面的公式excel找到逗号的第二次迭代,无论他们在文本中的位置,但实际使用的公式是相同的公式找到第一个逗号,字符的计数似乎自动假设不知何故,我想要的是第二个逗号而不是第一个,我如何指示公式找到逗号的后续迭代,如第三第四或第九?
还有什么我不明白的,为什么公式找到了第二个逗号?
干杯!

pxy2qtax

pxy2qtax1#

    • 解释您的困惑:**

乍看之下,它似乎使用相同的公式来查找第一个和第二个搜索符号。但仔细一看,您可能会注意到有一个参数 * start_num *,它告诉公式从哪里开始查找。如果您将第一个符号位置+1(SEARCH(",", A1) +1))作为该参数,公式将开始在此部分查找第一个搜索符号:"No.1234,用户,Jimbo Jones,状态-待定",并将给出答案42。您用第一个公式获得第一个机会,然后用上面的公式获得第二个机会。只需通过减法找到长度,就可以了。

    • 可能的解决方案:**

如果您有Office 365,请使用TEXTAFTER()TEXTBEFORE(),就像其他人所说的那样,您可以将示例编号作为参数传递:

=TEXTAFTER(TEXTBEFORE(A1,",",4),",",3)

结果:

然后,您可以使用TRIM()删除开头和结尾中不需要的空格。
如果您使用旧版本的Office,您可以使用SUBSTITUTE()作为解决方法,因为它允许您更改文本中特定符号的第n次出现。
选择一个未出现在文本中的符号,将第3次和第4次出现的搜索符号更改为该符号,然后查找它们(在本例中,我们将,替换为#

=MID(A1,SEARCH("#",SUBSTITUTE(A1,",","#",3))+1,SEARCH("#",SUBSTITUTE(A1,",","#",4))-(SEARCH("#",SUBSTITUTE(A1,",","#",3))+1))

小小解释:

说明栏C中使用的公式:
| C级|
| - ------|
| =替换(A1,",","#",3)|
| =替换(A1,",","#",4)|
| =搜索("#",B1)|
| =搜索("#",B2)|
| =中间值(A1、B3 + 1、B4-(B3 + 1))|
| |
| 完整配方:|
| = MID(A1,搜索("#",替换(A1,",","#",3))+1,搜索("#",替换(A1,",","#",4))-(搜索("#",替换(A1,",","#",3))+1))|
| 修剪:|
| =修剪(中间(A1,搜索("#",替换(A1,",","#",3))+1,搜索("#",替换(A1,",","#",4))-(搜索("#",替换(A1,",","#",3))+1))|

g52tjvyc

g52tjvyc2#

感谢所有的回应,我磨通过使用两个公式,我问(中间和搜索),我有一个结果。
它不漂亮也不优雅,但它提取数据的每一个要求。我将受益于这里留下的提示,以回应我的问题,因为更简单的选项可用。

**要求:**使用MID和SEARCH提取第3和第4个逗号之间的文本
示例文本A15

事件报告(修订),编号12545424234,用户,Jimbo Jones,状态-待定

MID(A15,(SEARCH(",",A15,(1+(SEARCH(",",A15,SEARCH(",",A15)+1)))))+2,(SEARCH(",",A15,(SEARCH(",",A15,SEARCH(",",A15)+1)+(SEARCH(",",A15)))-(SEARCH(",",A15,SEARCH(",",A15)+1)-(SEARCH(",",A15)))+1)-(SEARCH(",",A15,(1+(SEARCH(",",A15,SEARCH(",",A15)+1))))))-2)

浸提试验

金波·琼斯
显然,这种解决方案适用于其他文本,但显然也不容易针对其他文本位置进行快速修改。
不管怎样,再次为指针欢呼...

相关问题