[英]Extracting Specifc text string sections between two characters in Excel
[英]Extracting text between Number and Parantheses in a String field in Excel
我在 Excel 的文本字段中有一堆值,如下面的值,想知道是否有人知道提取郊区名称(即利物浦)的方法,该名称通常在第一个括号之前和最后一个数字之后,即邮政编码(3860 in这个案例)
PARK RD INT OF QUEENS DR LONDON 3860利物浦(AGA) VIC
提前致谢
将您的复杂值放入 A1 并在 B1 中尝试:
=IF(ISERROR(FIND(" ";LEFT(A1;FIND(" (";A1)-1)));LEFT(A1;FIND(" (";A1)-1);RIGHT(LEFT(A1;FIND(" (";A1)-1);LEN(LEFT(A1;FIND(" (";A1)-1))-FIND("~";SUBSTITUTE(LEFT(A1;FIND(" (";A1)-1);" ";"~";LEN(LEFT(A1;FIND(" (";A1)-1))-LEN(SUBSTITUTE(LEFT(A1;FIND(" (";A1)-1);" ";""))))))
这会给你之前的词(
.
在您的示例中,它将返回利物浦。 但仅供参考:这适用于单个单词。
办公室 365:
=LET(a,1+MATCH(1,0/ISNUMBER(0+MID(A1,SEQUENCE(LEN(A1)),1))),b,FIND("(",A1),TRIM(MID(A1,a,ba)))
这类事情最好分步完成,以便更容易理解和修改。 那是:
这适用于多字文本。
试过这个并且工作但是在每个 output 的开头都有一个空格,但我觉得这仍然是可以管理的
=IFERROR(LEFT(RIGHT(J13,LEN(J13)-MAX(IFERROR(FIND({1,2,3,4,5,6,7,8,9,0},J13,ROW(INDIRECT("1:"&LEN(J13)))),0))),MAX(FIND("(",RIGHT(J13,LEN(J13)-MAX(IFERROR(FIND({1,2,3,4,5,6,7,8,9,0},J13,ROW(INDIRECT("1:"&LEN(J13)))),0))))-1)),RIGHT(J13,LEN(J13)-MAX(IFERROR(FIND({1,2,3,4,5,6,7,8,9,0},J13,ROW(INDIRECT("1:"&LEN(J13)))),0))))
由于您有 Excel365,您可以使用:
B1
中的公式:
=TEXTJOIN(" ",,FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s[position()<count(//s[starts-with(., '(')][1]/preceding::*)+1][position()>count(//s[.*0=0][last()]/preceding::*)+1]"))
使用的 Xpath 表达式表示:
//s[position()<count(//s[starts-with(., '(')][1]/preceding::*)+1]
- 获取第一次出现之前的所有节点开括号。[position()>count(//s[.*0=0][last()]/preceding::*)+1]
- 在这些返回的节点中,确保 position在最后一个数字节点之后。这意味着您只会根据您的请求返回位于最后一个数字 substring 和第一个左括号之间的那些节点。
我仍在寻找一种更合理的方式来编写此 Xpath。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.