簡體   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