【问题标题】:Extract keywords from Excel or Google spreadsheet column从 Excel 或 Google 电子表格列中提取关键字
【发布时间】:2017-12-31 19:58:34
【问题描述】:

我有一份面试回复列表,想提取关键词(从定义的关键词列表中)并在面试问题旁边的列中列出(用逗号分隔)。参考图片。

我可以使用公式吗?还是VBA?还是谷歌表格脚本/插件?

感谢您的帮助!

【问题讨论】:

  • 您可以循环遍历关键字数组并针对每个关键字搜索每个问题。一种简单的方法是将找到的关键字粘贴到该行的每个后续列中,并将列表连接到一个单元格中,用逗号分隔;从编码的角度来看,我觉得这比将找到的值存储为变量,然后在以逗号分隔的字符串中完成搜索后粘贴它们更简单。

标签: excel vba excel-formula google-sheets spreadsheet


【解决方案1】:

在 Excel 中:

=TEXTJOIN(",",TRUE,IF(ISNUMBER(SEARCH($A$8:$A$11,A1)),$A$8:$A$11,""))

作为数组公式。退出编辑模式时需要用 Ctrl-Shift-Enter 确认,而不是 Enter。


如果您无法在 Excel 中访问 TEXTJOIN(),请将其放入模块中并使用上述公式。

Function TEXTJOIN(delim As String, skipblank As Boolean, arr)
    Dim d As Long
    Dim c As Long
    Dim arr2()
    Dim t As Long, y As Long
    t = -1
    y = -1
    If TypeName(arr) = "Range" Then
        arr2 = arr.Value
    Else
        arr2 = arr
    End If
    On Error Resume Next
    t = UBound(arr2, 2)
    y = UBound(arr2, 1)
    On Error GoTo 0

    If t >= 0 And y >= 0 Then
        For c = LBound(arr2, 1) To UBound(arr2, 1)
            For d = LBound(arr2, 1) To UBound(arr2, 2)
                If arr2(c, d) <> "" Or Not skipblank Then
                    TEXTJOIN = TEXTJOIN & arr2(c, d) & delim
                End If
            Next d
        Next c
    Else
        For c = LBound(arr2) To UBound(arr2)
            If arr2(c) <> "" Or Not skipblank Then
                TEXTJOIN = TEXTJOIN & arr2(c) & delim
            End If
        Next c
    End If
    TEXTJOIN = Left(TEXTJOIN, Len(TEXTJOIN) - Len(delim))
End Function

在 Google 表格中:

=Join(",",filter($A$8:$A$11,ISNUMBER(SEARCH($A$8:$A$11,A1))))

【讨论】:

  • 谢谢斯科特。我使用了 Google 表格版本,它运行良好。
  • 这看起来像一个数组公式@ScottCraner。这样我只需将公式粘贴到一个单元格 (B2) 中,它就会自动填充。
  • 不要以为你能做到,但问一个新问题,也许有人比我聪明。 @herteladrian
【解决方案2】:

我尝试将此添加为评论,但我还没有声誉! 无论如何,我想我找到了你正在寻找的东西。在您的示例中,您需要类似

    =IF(ISERROR(SEARCH("*startup*",A1,1)),"","startup, ")

并将其放入您的输出单元格中。

Source

编辑:我在发布此消息后看到 Scott 以 3 分钟的优势击败了我。但是,它们的执行方式略有不同,所以我也会留下我的。

【讨论】:

  • 这似乎不像我需要的那样。您的代码看起来需要我对每个关键字进行硬编码。我错过了什么吗?
  • 这有点野蛮,但如果你只有你发布的 4 个关键词应该没问题。然而,远不止于此,与斯科特的回答相比,这更加相形见绌!看到他的回答后,我把我的作为概念证明留下了。我用 Excel 中的一些虚拟数据对其进行了测试,它打印出(我认为)您在问题中提出的问题 - 给定列表中单元格中的单词列表。对于不止几个关键字,Scott's 绝对是更好的选择!
猜你喜欢
  • 2014-04-06
  • 2017-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-18
相关资源
最近更新 更多