Excel左侧相同文本查找及商品变体标题重复词提取咨询
嘿,针对你提出的两个问题,我整理了实用的解决方案,都是日常处理这类需求常用的方法:
问题1:Excel中指定单元格区域内从左侧查找相同文本内容
这里分两种常见场景,对应不同的处理方式:
场景1:提取区域内所有单元格的最长公共前缀
如果想找出所有单元格开头重复的最长文本(比如多个商品标题的核心前缀),有两种简单方法:
- 公式法:假设目标区域是
A1:A5,用这个数组公式(Excel 365直接回车,旧版按Ctrl+Shift+Enter确认):
原理是逐个字符校验所有单元格是否都包含该位置的字符,找到第一个不统一的位置后,截取前面的重复部分。=LEFT(A1,MIN(FIND(CHAR(1),SUBSTITUTE(A1,MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),CHAR(1),COUNTIF(A1:A5,"*"&MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)&"*"))))-1) - Power Query法(更直观):
- 选中数据区域,点击「数据」选项卡→「从表格/区域」导入Power Query编辑器
- 添加自定义列,输入公式:
List.LongestCommonPrefix(Table.Column(Source, "你的列名")) - 点击「关闭并上载」,就能得到所有单元格的最长公共前缀
场景2:查找特定文本在区域内单元格左侧的出现情况
如果要找某个特定文本(比如"Apple")在哪些单元格开头包含它,用COUNTIF配合通配符就能快速统计:
=COUNTIF(A1:A10,"Apple*")
这个公式会返回A1:A10中以"Apple"开头的单元格数量;如果要定位第一个匹配的单元格位置,用MATCH:
=MATCH("Apple*",A1:A10,0)
问题2:从商品标题中提取重复文本识别商品变体
变体标题一般共享核心关键词或前缀,比如"2024纯棉T恤-白色"和"2024纯棉T恤-黑色",提取重复文本的方法分两种场景:
方法1:Excel处理(适合小数据量)
如果数据不多,用最长公共前缀公式就能直接提取核心重复部分。如果重复文本不一定在开头,可以用这个公式提取所有标题都包含的关键词:
=TEXTJOIN(" ",TRUE,FILTER(UNIQUE(TEXTSPLIT(TEXTJOIN(" ",TRUE,A1:A5)," ")),COUNTIF(TEXTSPLIT(TEXTJOIN(" ",TRUE,A1:A5)," "),UNIQUE(TEXTSPLIT(TEXTJOIN(" ",TRUE,A1:A5)," ")))=COUNTA(A1:A5)))
它会把所有标题拆成单词,筛选出在每个标题里都出现的单词,再拼接成核心文本。
方法2:代码处理(适合大量抓取数据)
如果是用Python处理批量抓取的卖家数据,推荐这两种方法:
- 提取最长公共前缀:用
difflib库快速找到连续的重复文本:from difflib import SequenceMatcher def longest_common_prefix(strings): if not strings: return "" # 先对比前两个字符串的公共前缀 matcher = SequenceMatcher(None, strings[0], strings[1]) match = matcher.find_longest_match(0, len(strings[0]), 0, len(strings[1])) common = strings[0][match.a:match.a+match.size] # 再和后续字符串逐一对比,缩短公共前缀 for s in strings[2:]: matcher = SequenceMatcher(None, common, s) match = matcher.find_longest_match(0, len(common), 0, len(s)) common = common[match.a:match.a+match.size] if not common: break return common # 示例变体标题 variant_titles = [ "2024款纯棉T恤 - 白色M码", "2024款纯棉T恤 - 黑色L码", "2024款纯棉T恤 - 灰色XL码" ] print(longest_common_prefix(variant_titles)) # 输出:2024款纯棉T恤 - - 提取非连续的共同关键词:如果重复文本是分散的关键词,统计词频后筛选出所有标题都包含的词:
from collections import Counter import re def extract_common_keywords(titles): all_words = [] for title in titles: # 拆分标题为单词,转小写并去除特殊字符 words = re.findall(r'\w+', title.lower()) all_words.extend(words) word_counts = Counter(all_words) # 筛选出在所有标题中都出现的单词 common_words = [word for word, count in word_counts.items() if count == len(titles)] return " ".join(common_words) print(extract_common_keywords(variant_titles)) # 输出:2024款 纯棉 t恤
内容的提问来源于stack exchange,提问作者Tunahan KORKMAZ
相关产品推荐
相关产品推荐

