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),例如。 /128GB32GB(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)," ","/"))),"")

逻辑是

  1. 使用MID提取GB前面的5个字符加上"GB"(因此7个字符总共) 来自字符串,
  2. SUBSTITUTE " " (space) 用上一步的 7 个字符中的 /
  3. 查找7个字符中/的位置,
  4. 使用RIGHT函数提取/,
  5. 右侧的所有字符
  6. 如果字符串中没有 GB,则使用 IFERROR 显示“”(空白单元格)。

如果您使用辅助列来存储步骤 1 中的文本字符串,公式可能会更短且更易于解释。

干杯:)