如果可能的話,我想剝離所有內容並獲取訂單 ID。問題是:訂單 ID 的位置,有時以A
或開頭1
。
- 單元格範例 A1:
{"Ref":"bad order","OrderId":"ABSER27"}
- 單元格範例 A2:
{"OrderId":"ABSER27"}
- 單元格範例 A3:
{"order_id":"12345678","customer_email":"[email protected]"}
- 期望結果:B1 =
ABSER27
- 期望結果:B3 =
ABSER27
- 期望結果:B3 =
12345678
答案1
使用 Excel 的「文字到列」功能可以讓生活變得更輕鬆。
步驟 1 - 將字串切成列
首先,去掉前導{
和尾隨}
。您可以使用替換函數來完成此操作,或者如果您想使用函數來完成此操作,則可以使用=MID(A1,2,LEN(A1)-2)
.
接下來,選擇 A 列(不含{ }
),然後從功能區中選擇資料 > 資料工具 > 文字到列。使用以下選項:
步驟 2 - 從列中選擇訂單 ID
之後,您可以做任何您想做的事情來獲取訂單 ID。一個簡單的方法是在 G 列中輸入公式,其中儲存格 G1 具有以下公式:
=INDIRECT("RC"&MATCH("order*id",A1:F1,0)+1,FALSE)
由於範例中的「OrderId」也可能採用「order_id」的形式,因此我們使用通配符*
進行比對。然後,公式將取得「OrderId」右側的儲存格。
答案2
對於此類問題我使用正規表示式尋找/取代插件
(我與它沒有任何關係,只是一個狂熱用戶)
這樣您就可以使用正規表示式,例如:
=RegExReplace(UPPER(A1),".*ORDER_?ID"":""([^""]+)"".*","$1")
答案3
在儲存格 B2 中使用 Mid 函數
文字=A2
起始編號 = 使用搜尋功能(搜尋不區分大小寫,而尋找則區分大小寫)在儲存格 A2 中從位置 1 開始找到「id」的位置,然後將字元數新增至訂單編號。
字元數是起始數字到下一個雙引號(ASCII 字元 34)位置的差值。
=MID(A2,SEARCH("id",A2,1)+5,(FIND(CHAR(34),A2,(SEARCH("id",A2,1)+5))-(SEARCH("id",A2,1)+5)))
編輯以允許在電子郵件字段或訂單 ID 中添加額外的“ID/id”,無需插件或 VBA
將 true 和 false MID 語句包裝在 IF 內,檢查是否存在多個 id 且電子郵件地址不是第一個逗號分隔欄位。
=IF(
AND((LEN(A2)-LEN(SUBSTITUTE(UPPER(A2),("ID"),"")))/LEN("ID")>1,ISERROR(FIND("@",LEFT(A2,FIND(",",A2)-1),1))=FALSE),
MID(A2,
FIND("~",SUBSTITUTE(UPPER(A2),"ID","~",2),1)+5,
FIND(CHAR(34),A2,FIND("~",SUBSTITUTE(UPPER(A2),"ID","~",2),1)+5)-(FIND("~",SUBSTITUTE(UPPER(A2),"ID","~",2),1)+5)
),
MID(A2,
SEARCH("ID",A2,1)+5,
(FIND(CHAR(34),A2,(SEARCH("ID",A2,1)+5))-(SEARCH("ID",A2,1)+5))
)
)
答案4
根據您提供的資訊 - 訂單 ID 從第一個A
或1
現場運行,一直到第一個後續"
(引用) - 這並不困難。如果我們使用一些“輔助列”,這是最簡單的:
C1
→=IFERROR(FIND("A",$A1), LEN($A1)+1)
D1
→=IFERROR(FIND("1",$A1), LEN($A1)+1)
E1
→=MIN($C1,$D1)
F1
→=FIND("""", $A1, $E1)
C1
並分別在儲存格 中 D1
找到第一個A
和。如果沒有,則傳回錯誤,並且使用,我們將值設為長度加一;即最後一個字元之後下一個字元的偏移量。 是其中較小的一個;因此,如果至少找到一個或,則指向第一個。如果沒有,那麼也是長度+1。1
A1
FIND
IFERROR
A1
E1
A
1
E1
現在找到了上述之後的F1
第一個。"
如果沒有"
,則這是一個錯誤。如果沒有 anA
或 a 1
,E1
則長度為A1
+1,所以F1
也是錯誤。
所以最後我們設定
B1
→=IF(ISERROR($F1), "ERROR", MID($A1, $E1, $F1-$E1))
如果F1
是錯誤,則僅顯示一個ERROR
指示器。否則,從 的 MIDdle 中提取子字串,從或A1
的位置開始,長度達到(但不包括)分隔符號。A
1
"