You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel:使用Named Range查找句子词汇并复制至相邻单元格

嘿,针对你需要在Excel里从句子中匹配指定词汇并输出的需求,我给你准备了两种实用的解决方案,分别适合不同的场景:

方法一:使用Excel数组公式(无需编程)

这个方法适合数据量不大的情况,直接用内置函数就能实现:

在Words列(比如B列)的第一个单元格(B1)中输入以下公式:

=TEXTJOIN(", ", TRUE, IF(ISNUMBER(SEARCH(Words, A1)), Words, ""))

公式说明:

  • SEARCH(Words, A1):检查Words命名区域中的每个词汇是否出现在A1单元格的句子里,返回匹配的位置(找不到则返回错误值)
  • ISNUMBER(...):把位置转换成布尔值(找到为TRUE,找不到为FALSE)
  • IF(...):只保留匹配到的词汇,未匹配的返回空文本
  • TEXTJOIN(", ", TRUE, ...):把所有匹配到的词汇用逗号加空格连接起来,忽略空值

注意: 如果是Excel 2019及以前的版本,需要按Ctrl+Shift+Enter组合键作为数组公式输入;Excel 365/2021版本直接回车即可生效。输入完成后下拉填充到所有行就行。

如果需要区分大小写匹配,把SEARCH换成FIND即可。

方法二:自定义VBA函数(适合大量数据)

如果你的词汇量超过100个且句子数量很多,数组公式可能会卡顿,这时候用VBA自定义函数更高效:

  1. 打开Excel,按Alt+F11打开VBA编辑器
  2. 在左侧项目窗口中,右键点击你的工作簿名称,选择「插入」→「模块」
  3. 在弹出的代码窗口中粘贴以下代码:
Function ExtractMatchingWords(Sentence As String, WordList As Range) As String
    Dim cell As Range
    Dim result As String
    
    result = ""
    '遍历WordList中的每个词汇
    For Each cell In WordList
        'vbTextCompare表示不区分大小写,换成vbBinaryCompare则区分大小写
        If InStr(1, Sentence, cell.Value, vbTextCompare) > 0 Then
            If result <> "" Then
                result = result & ", " '多个匹配项用逗号分隔
            End If
            result = result & cell.Value
        End If
    Next cell
    
    ExtractMatchingWords = result
End Function
  1. 关闭VBA编辑器,回到Excel界面,在Words列的第一个单元格输入:
=ExtractMatchingWords(A1, Words)

然后下拉填充到所有行即可。

效果示例

比如你的第一句:Jack goes to the party with Jill.,如果Words里包含「to the party」,那么对应的Words列就会显示to the party;如果句子里匹配到多个词汇,会自动用逗号分隔显示。

内容的提问来源于stack exchange,提问作者user6757228

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:47:08