返回string中最后一个数字右侧的所有文本

返回一个单元格的正确的文本string,直到从右边的第一个数字,例如

“geb。1956年十八月十五日西斯克”HRL“必须返回Westerkerk HRL
“1956年十月十四日”必须返回空格
“”必须返回空单元格

公式解答:

=TRIM(MID(A1,1+MAX(FIND({1,2,3,4,5,6,7,8,9,0},A1&"1234567890")*ISNUMBER(FIND({1,2,3,4,5,6,7,8,9,0},A1))),LEN(A1)))

编辑 :我意识到,如果有一个重复的数字(例如,如果它是1966年,而不是1956年),上述公式可能会遇到问题,所以我回去提出这个问题不会受到这个问题的影响:

=TRIM(MID(A1,1+LOOKUP(2,1/ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)),ROW(INDIRECT("1:"&LEN(A1)))),LEN(A1)))

但是, INDIRECT是一个易失性函数,我通常试图避免它。 你可以改为使用一个比你的文本string的长度更高的数字来实现同样的目标,而不使用volatile函数,但实际上这可能不会比在公式中使用INDIRECT函数更快:

=TRIM(MID(A1,1+LOOKUP(2,1/ISNUMBER(--MID(A1,ROW($1:$255),1)),ROW($1:$255)),LEN(A1)))

所以基本上,你可以使用任何公式,无论你喜欢的。

一些猴子的工作 – 有人可能有一个更简单的解决scheme – 但首先你需要得到最高的lastIndexOf'0'到'9'。 在你的例子中,数字是“6”。 从那里,你可以创build一个子string。

 var c = 'geb. 14 oct 1956 Westerkerk HRL'; // c for companyname var subc = ''; var startsub = c.lastIndexOf('6') + 2; // Point past the space to the W. if(c.length > startsub) subc = c.substring(startsub, c.length); return subc;