从特定位置提取上一个单词(向左)的Excel公式

从特定位置提取上一个单词(向左)的Excel公式,excel,excel-formula,excel-2010,excel-2007,Excel,Excel Formula,Excel 2010,Excel 2007,我在excel文件中有多条记录,如A列: 信息增益印度(P)有限公司3-6年诺伊达 ROBOSPECIES TECHNOLOGIES私人有限公司0-2年新德里 红柠檬0-3岁诺伊达(第7区诺伊达) 在数据范围内,有一个提及的年份范围,例如第一个列表项中的3-6年 我想从以上3个列表项中提取数据3-6、0-2、0-3等。我知道在所有字符串中搜索“yrs”将给出结束位置。然而,我无法确定如何找到多少年的起始位置 我需要excel公式,该公式将给出年份范围。 我不想在解决方案中使用任何VBA。尝试

我在excel文件中有多条记录,如A列:

  • 信息增益印度(P)有限公司3-6年诺伊达
  • ROBOSPECIES TECHNOLOGIES私人有限公司0-2年新德里
  • 红柠檬0-3岁诺伊达(第7区诺伊达)
在数据范围内,有一个提及的年份范围,例如第一个列表项中的3-6年

我想从以上3个列表项中提取数据3-6、0-2、0-3等。我知道在所有字符串中搜索“yrs”将给出结束位置。然而,我无法确定如何找到多少年的起始位置

我需要excel公式,该公式将给出年份范围。
我不想在解决方案中使用任何VBA。

尝试以下方法,尽管非常确定它可以压缩。我已尝试处理可能存在的额外空白以及长度为多位数的年份,例如12-15。通过合并方法来查找字符的最后一次出现

=RIGHT(TRIM(LEFT(TRIM(SUBSTITUTE(A1,CHAR(32)," ")),FIND("yrs",TRIM(SUBSTITUTE(A1,CHAR(32)," ")),1)-1)),LEN(TRIM(LEFT(TRIM(SUBSTITUTE(A1,CHAR(32)," ")),FIND("yrs",TRIM(SUBSTITUTE(A1,CHAR(32)," ")),1)-1)))-LOOKUP(9.9999999999E+307,FIND(" ",TRIM(LEFT(TRIM(SUBSTITUTE(A1,CHAR(32)," ")),FIND("yrs",TRIM(SUBSTITUTE(A1,CHAR(32)," ")),1)-1)),ROW($1:$1024))))
试试看


如果数字之间没有空格,则可以使用以下公式

=TRIM(右)(替换为TRIM(左)(替换为A3,“yrs”,REPT(“,99)),99)),”,REPT(“,99)),99))
尝试以下公式

=TRIM(RIGHT(SUBSTITUTE(LEFT(A1,SEARCH("yrs",A1)-1)," ","|",LEN(LEFT(A1,SEARCH("yrs",A1)-1))-LEN(SUBSTITUTE(LEFT(A1,SEARCH("yrs",A1)-1)," ",""))-1),LEN(SUBSTITUTE(LEFT(A1,SEARCH("yrs",A1)-1)," ","|",LEN(LEFT(A1,SEARCH("yrs",A1)-1))-LEN(SUBSTITUTE(LEFT(A1,SEARCH("yrs",A1)-1)," ",""))-1))-SEARCH("|",SUBSTITUTE(LEFT(A1,SEARCH("yrs",A1)-1)," ","|",LEN(LEFT(A1,SEARCH("yrs",A1)-1))-LEN(SUBSTITUTE(LEFT(A1,SEARCH("yrs",A1)-1)," ",""))-1))))

字符串中的其他地方可以有数字吗?是的,字符串中的任何地方都可以有数字或破折号。唯一固定的字符串是“yrs”。因此,我们必须从这个特定的字符串开始使用Office 365,使用以下数组公式:
=CONCAT(如果(TRIM(MID)(SUBSTITUTE(A1)”,REPT(“,999)),(ROW($1:$50)-1)*999+1999))=“yrs”,TRIM(MID(SUBSTITUTE(A1,”,REPT(“,999)),(ROW($1:$50)-2)*999+1999))
行前面的“单词”的大小无关紧要($1:$50)在您的公式中,正在生成循环引用。只有当公式中的单元格引用
A1
引用自身时,它才会是循环引用。有两个,两个都需要指向带有文本的实际单元格。行只是一个计数器,不会导致循环引用,但您接受的那一个更好。@pnuts:I was worried对年数超过1位数和可能增加的空格表示不满。也就是说,我很确定我已经把事情复杂化了。@pnuts true感谢QHarr的帮助。该公式非常有效,还考虑了两位数的年数,如12-17岁。我只想使用来自redij的公式这是一个来自redij的公式,非常简洁。代码看起来不错,但是你能更新你的答案来解释你在做什么,以及你是如何得到答案的吗?谢谢。如果年数只有个位数,比如2-3年,这个公式就行了。(因为我们从找到年数的右边取了4个字符)。但是,年份也可以是12-17岁等。因此字符数必须是动态的。工作起来像一个符咒-短而脆。它还考虑了两位数的年份,如12-15岁等。非常感谢您!!@Sagnipal感谢您的反馈!感谢您的帮助。公式非常有效,也考虑了两位数12-17岁。我倾向于使用redij的公式的唯一一点是,redij的公式非常简洁。
=TRIM(RIGHT(SUBSTITUTE(LEFT(A1,SEARCH("yrs",A1)-1)," ","|",LEN(LEFT(A1,SEARCH("yrs",A1)-1))-LEN(SUBSTITUTE(LEFT(A1,SEARCH("yrs",A1)-1)," ",""))-1),LEN(SUBSTITUTE(LEFT(A1,SEARCH("yrs",A1)-1)," ","|",LEN(LEFT(A1,SEARCH("yrs",A1)-1))-LEN(SUBSTITUTE(LEFT(A1,SEARCH("yrs",A1)-1)," ",""))-1))-SEARCH("|",SUBSTITUTE(LEFT(A1,SEARCH("yrs",A1)-1)," ","|",LEN(LEFT(A1,SEARCH("yrs",A1)-1))-LEN(SUBSTITUTE(LEFT(A1,SEARCH("yrs",A1)-1)," ",""))-1))))