非常简单的公式如下,但我错过了一些理解,它似乎令人沮丧的简单。
非常简单的文本提取:
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找到逗号的第二次迭代,无论他们在文本中的位置,但实际使用的公式是相同的公式找到第一个逗号,字符的计数似乎自动假设不知何故,我想要的是第二个逗号而不是第一个,我如何指示公式找到逗号的后续迭代,如第三第四或第九?
还有什么我不明白的,为什么公式找到了第二个逗号?
干杯!
2条答案
按热度按时间pxy2qtax1#
乍看之下,它似乎使用相同的公式来查找第一个和第二个搜索符号。但仔细一看,您可能会注意到有一个参数 * start_num *,它告诉公式从哪里开始查找。如果您将第一个符号位置+1(
SEARCH(",", A1) +1)
)作为该参数,公式将开始在此部分查找第一个搜索符号:"No.1234,用户,Jimbo Jones,状态-待定",并将给出答案42。您用第一个公式获得第一个机会,然后用上面的公式获得第二个机会。只需通过减法找到长度,就可以了。如果您有Office 365,请使用
TEXTAFTER()
和TEXTBEFORE()
,就像其他人所说的那样,您可以将示例编号作为参数传递:结果:
然后,您可以使用
TRIM()
删除开头和结尾中不需要的空格。如果您使用旧版本的Office,您可以使用
SUBSTITUTE()
作为解决方法,因为它允许您更改文本中特定符号的第n次出现。选择一个未出现在文本中的符号,将第3次和第4次出现的搜索符号更改为该符号,然后查找它们(在本例中,我们将
,
替换为#
:小小解释:
说明栏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))|
g52tjvyc2#
感谢所有的回应,我磨通过使用两个公式,我问(中间和搜索),我有一个结果。
它不漂亮也不优雅,但它提取数据的每一个要求。我将受益于这里留下的提示,以回应我的问题,因为更简单的选项可用。
**要求:**使用MID和SEARCH提取第3和第4个逗号之间的文本
示例文本A15
事件报告(修订),编号12545424234,用户,Jimbo Jones,状态-待定
浸提试验
金波·琼斯
显然,这种解决方案适用于其他文本,但显然也不容易针对其他文本位置进行快速修改。
不管怎样,再次为指针欢呼...