繁体   English   中英

在 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);" ";""))))))

这会给你之前的词( .
在您的示例中,它将返回利物浦。 但仅供参考:这适用于单个单词。

试试下面的公式 -

=TRIM(RIGHT(SUBSTITUTE(TRIM(LEFT(SUBSTITUTE(A1,"(",REPT(" ",300)),300))," ",REPT(" ",100)),100))

你也可以试试——

=FILTERXML("<t><s>"&SUBSTITUTE(FILTERXML("<t><s>"&SUBSTITUTE(A1,"(","</s><s>")&"</s></t>","//s[1]")," ","</s><s>")&"</s></t>","//s[last()]")

在此处输入图像描述

办公室 365:

=LET(a,1+MATCH(1,0/ISNUMBER(0+MID(A1,SEQUENCE(LEN(A1)),1))),b,FIND("(",A1),TRIM(MID(A1,a,ba)))

这类事情最好分步完成,以便更容易理解和修改。 那是:

  • A1:要从中提取的文本
  • B1: Position 最后一个数字和空格后的第一个字符 =IFERROR(MATCH(10^6, INDEX(--MID(A1, ROW( INDIRECT("1:"& LEN(A1))), 1), )) , 0)+2
  • C1: Position 左括号 =FIND("(",A1)
  • D1:提取文本 =MID(A1,C1,D1-C1-1)

这适用于多字文本。

试过这个并且工作但是在每个 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM