excel 提取单词 (GB) 和前面的数字
excel extract word (GB) and number before it
我卡住了 我有 excel sheet 我需要从字符串中提取 GB 和数字。
Galaxy S10+ 8/128GB (Snapdragon 855) 应该是 128GB 不知道怎么做。找不到任何将使用 whilecard 的公式,有帮助吗?
我正在使用
=IF((LEN(A3)-LEN(SUBSTITUTE(A3," ","")))<2,A3,LEFT(A3,FIND(" ",A3,FIND(" ",A3)+1)-1))
to extract phone name but stusk with a GB for it
首先我们需要用 space 替换 /
然后找到 GB 之前的最后一个 space 并将其设置为中间公式的开头:
=IFERROR(MID(LEFT(A2,FIND("GB",A2)+1),FIND("}}}",SUBSTITUTE(SUBSTITUTE(LEFT(A2,FIND("GB",A2)+2),"/"," ")," ","}}}",LEN(SUBSTITUTE(LEFT(A2,FIND("GB",A2)+1),"/"," "))-LEN(SUBSTITUTE(SUBSTITUTE(LEFT(A2,FIND("GB",A2)+1),"/"," ")," ",""))))+1,LEN(A2)),"")
在Excel2013中,有FILTERXML
功能,可以使用:
=IFERROR(FILTERXML("<t><s>" &SUBSTITUTE(SUBSTITUTE(A1,"/"," ")," ","</s><s>") & "</s></t>","//s[contains(.,'GB')]"),"")
使用 spaces(并将 /
替换为 space),我们创建一个 XML,其中每个节点由space分离。
然后我们使用一个Xpath
到return包含GB
的节点
如果字符串满足以下条件:
- GB前的数字字符数最多不超过4,例如。不会有字符串显示 12345GB;和
- GB 前面的数值前总会有
/
或" "
(space),例如。 /128GB
或 32GB
(32 前面有一个 space)
您可以使用以下公式从字符串中找到所需的文本。
=IFERROR(RIGHT(SUBSTITUTE(MID(A1,FIND("GB",A1)-5,7)," ","/"),LEN(SUBSTITUTE(MID(A1,FIND("GB",A1)-5,7)," ","/"))-FIND("/",SUBSTITUTE(MID(A1,FIND("GB",A1)-5,7)," ","/"))),"")
逻辑是
- 使用MID提取GB前面的5个字符加上"GB"(因此7个字符总共) 来自字符串,
- SUBSTITUTE " " (space) 用上一步的 7 个字符中的
/
,
- 查找7个字符中
/
的位置,
- 使用RIGHT函数提取
/
, 右侧的所有字符
- 如果字符串中没有 GB,则使用 IFERROR 显示“”(空白单元格)。
如果您使用辅助列来存储步骤 1 中的文本字符串,公式可能会更短且更易于解释。
干杯:)
我卡住了 我有 excel sheet 我需要从字符串中提取 GB 和数字。 Galaxy S10+ 8/128GB (Snapdragon 855) 应该是 128GB 不知道怎么做。找不到任何将使用 whilecard 的公式,有帮助吗?
我正在使用
=IF((LEN(A3)-LEN(SUBSTITUTE(A3," ","")))<2,A3,LEFT(A3,FIND(" ",A3,FIND(" ",A3)+1)-1)) to extract phone name but stusk with a GB for it
首先我们需要用 space 替换 /
然后找到 GB 之前的最后一个 space 并将其设置为中间公式的开头:
=IFERROR(MID(LEFT(A2,FIND("GB",A2)+1),FIND("}}}",SUBSTITUTE(SUBSTITUTE(LEFT(A2,FIND("GB",A2)+2),"/"," ")," ","}}}",LEN(SUBSTITUTE(LEFT(A2,FIND("GB",A2)+1),"/"," "))-LEN(SUBSTITUTE(SUBSTITUTE(LEFT(A2,FIND("GB",A2)+1),"/"," ")," ",""))))+1,LEN(A2)),"")
在Excel2013中,有FILTERXML
功能,可以使用:
=IFERROR(FILTERXML("<t><s>" &SUBSTITUTE(SUBSTITUTE(A1,"/"," ")," ","</s><s>") & "</s></t>","//s[contains(.,'GB')]"),"")
使用 spaces(并将
/
替换为 space),我们创建一个 XML,其中每个节点由space分离。然后我们使用一个
Xpath
到return包含GB 的节点
如果字符串满足以下条件:
- GB前的数字字符数最多不超过4,例如。不会有字符串显示 12345GB;和
- GB 前面的数值前总会有
/
或" "
(space),例如。/128GB
或32GB
(32 前面有一个 space)
您可以使用以下公式从字符串中找到所需的文本。
=IFERROR(RIGHT(SUBSTITUTE(MID(A1,FIND("GB",A1)-5,7)," ","/"),LEN(SUBSTITUTE(MID(A1,FIND("GB",A1)-5,7)," ","/"))-FIND("/",SUBSTITUTE(MID(A1,FIND("GB",A1)-5,7)," ","/"))),"")
逻辑是
- 使用MID提取GB前面的5个字符加上"GB"(因此7个字符总共) 来自字符串,
- SUBSTITUTE " " (space) 用上一步的 7 个字符中的
/
, - 查找7个字符中
/
的位置, - 使用RIGHT函数提取
/
, 右侧的所有字符
- 如果字符串中没有 GB,则使用 IFERROR 显示“”(空白单元格)。
如果您使用辅助列来存储步骤 1 中的文本字符串,公式可能会更短且更易于解释。
干杯:)