提取特定单词后和逗号前的文本的公式

提取特定单词后和逗号前的文本的公式

我有一张 Excel 表,其中有一列单元格包含如下数据:

brand=Nike,size=Large,color=Red

我想提取 'brand=' 之后和 ',' 之前的文本

在上面的例子中,公式将提取单词“Nike”。

我已尝试将文本放入列中,但不幸的是,数据并不总是按照相同的顺序排列(例如,size= 或 color= 可能首先出现在单元格中)。

品牌名称的长度可能不同(例如 Nike、Reebok、Under Armour 等)。

我当前的公式给我一片空白:

=LEFT(A2, SEARCH("brand=",A2)-1)

有人可以提供一个公式来提取这些数据吗?

答案1

尝试使用 Excel 2013 或更高版本中可用的 FILTERXML 函数。

在 中B2,公式抄下来:

=FILTERXML("<a "&SUBSTITUTE(SUBSTITUTE(A2,"=","='"),",","' ")&"'/>","a/@brand")

在此处输入图片描述

编辑 :

将公式中的特定词“品牌”更改为其他词,如“尺寸”或“颜色”,它将提取特定词后的文本

答案2

第一个问题是您的搜索返回“1”,即“品牌”出现在字符串的第一个位置,而左侧仅返回该数量的字符。按照此路线,您要做的就是将“品牌”的长度添加到字符串中,然后再搜索逗号并将其添加。

如果不知道字符串中的“品牌”在哪里,您首先需要裁剪该点之前的所有内容。

因此,SEARCH("brand=",A2)我们从修剪字符串的开头开始RIGHT

=RIGHT(A2,LEN(A2)-SEARCH("brand=",A2)+1)

我们使用这样LEN我们就可以得到完整的字符串长度减去“品牌”的起始位置。

这给了我们一个以“brand=”开头的字符串。

+1然后,我们可以通过改变to的值来优化 RIGHT,-5以去掉“brand=”

=RIGHT(A2,LEN(A2)-SEARCH("brand=",A2)-5)

从这里开始,事情变得很混乱,因为我们需要,在尝试修剪字符串的同时找到第一个。辅助单元格可能更干净、更快,但您可以(对于小型电子表格)只需使用上述相同的公式两次。这只给了我们最后一个LEFT也是最后一个SEARCH

=LEFT(RIGHT(A2,LEN(A2)-SEARCH("brand=",A2)-5), SEARCH(",",RIGHT(A2,LEN(A2)-SEARCH("brand=",A2)-5))-1)

可能有更干净的方法可以做到这一点,这只是其中一种方法。

相关内容