![](/img/trans.png)
[英]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.