Excel/Sheets技术求助:如何提取字符串中的颜色(Farve)
提取文本中颜色的解决方案
针对颜色名称长度不固定、无法准确定位起始/结束位置的问题,可根据文本结构选择以下方法:
一、颜色前后有固定标识(最常见场景)
如果颜色字段有明确的前缀(如“Farve: ”)或后缀分隔符(如|、逗号等),用REGEXEXTRACT正则提取是最优解,无需考虑颜色长度:
- 示例1:颜色后有固定分隔符
假设文本为Produkt: Jakke | Farve: Mørk Grå | Størrelse: XL,提取颜色的公式:
其中REGEXEXTRACT(A1, "Farve: (.*?) \|")(.*?)是非贪婪匹配,会精准提取“Farve: ”后到下一个|之间的内容。 - 示例2:颜色在字段末尾
假设文本为Vare: T-Shirt - Farve: Lys Blå,提取颜色的公式:REGEXEXTRACT(A1, "Farve: (.*)$")$表示匹配到文本结尾,直接提取前缀后的所有内容。 - 适配多分隔符场景
如果颜色后的分隔符不固定(逗号、句号、竖线都有可能),可以扩展正则匹配范围:REGEXEXTRACT(A1, "Farve: (.*?)[,.|]")
二、文本中仅含一个颜色词(无固定标识)
如果文本里只有一个颜色词汇,其他内容为产品描述,可通过预设颜色词库匹配提取:
- Google Sheets 公式:
假设B1:B100是颜色词库(如Rød、Blå、Grå等),A1是目标文本单元格:=INDEX($B$1:$B$100, MATCH(TRUE, ISNUMBER(SEARCH($B$1:$B$100, A1)), 0)) - Excel 公式:
同样基于颜色词库color_list,使用XLOOKUP匹配:=XLOOKUP(TRUE, ISNUMBER(SEARCH(color_list, A1)), color_list, "Ingen farve fundet")
三、颜色带标准格式(如十六进制、RGB)
如果颜色以标准代码形式出现,可直接匹配格式提取:
- 提取十六进制颜色:
REGEXEXTRACT(A1, "#[0-9A-Fa-f]{6}") - 提取RGB格式颜色:
REGEXEXTRACT(A1, "RGB\(\d{1,3},\d{1,3},\d{1,3}\)")
补充说明
- 若文本含多个颜色,可结合
ARRAYFORMULA(Google Sheets)或TEXTJOIN(Excel)批量提取所有匹配项; - 正则匹配时,注意区分大小写(如需忽略大小写,可在正则后加
i参数,如REGEXEXTRACT(A1, "farve: (.*?) \|", "i"))。
内容的提问来源于stack exchange,提问作者Sebastian Moth
相关产品推荐
相关产品推荐

