如果可能的话我想剥离所有内容并获取订单 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 - 将字符串分成几列
首先,删除前导{
和尾随的}
。您可以使用 replace 函数来完成此操作,或者如果您想使用函数来完成此操作,则=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
起始编号 = 使用搜索功能(搜索不区分大小写,但查找区分大小写)从位置 1 开始定位单元格 A2 中“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
将真和假的 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
第一个。如果没有,则会出现错误。如果没有或,则长度为+1,因此也会出现错误。"
"
A
1
E1
A1
F1
所以最后我们设置
B1
→=IF(ISERROR($F1), "ERROR", MID($A1, $E1, $F1-$E1))
如果F1
是错误,则仅显示一个ERROR
指示符。否则,从 的 MIDdle 中提取子字符串,从或A1
的位置开始,长度直到(但不包括)分隔符。A
1
"