从Excel或Google电子表格列中提取关键字
我有一个面试回答列表,并希望从面试问题旁边的列中提取关键字(来自定义的关键字列表)并列出它们(用逗号分隔)。请参阅图片以供参考。从Excel或Google电子表格列中提取关键字
我可以使用公式吗?或VBA?或谷歌床单脚本/附加?
在Excel:
=TEXTJOIN(",",TRUE,IF(ISNUMBER(SEARCH($A$8:$A$11,A1)),$A$8:$A$11,""))
作为阵列式。在退出编辑模式时,需要使用Ctrl-Shift-Enter而不是Enter键确认。
如果您没有访问TEXTJOIN()在您的Excel,一个模块在将这个和用公式如上所述。
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
在谷歌表:
=Join(",",filter($A$8:$A$11,ISNUMBER(SEARCH($A$8:$A$11,A1))))
我希望我能够投票答复这个答案! –
谢谢斯科特。我使用了Google表格版本,效果很好。 – herteladrian
这看起来像一个Array Formula @ScottCraner。 这样我只需要将公式粘贴到一个单元格(B2)中并自动填充。 – herteladrian
我尝试添加这是一个评论,但我没有信誉呢! 无论如何,我想我找到了你正在寻找的东西。在你的例子中,你会想要像
=IF(ISERROR(SEARCH("*startup*",A1,1)),"","startup, ")
并把它放在你的输出单元格中。
编辑:我看到我张贴这种斯科特3分钟打我后。但是,它们的做法略有不同,所以我也会把它放在一边。
这似乎并不像我所需要的那样。你的代码看起来像它需要我硬编码每个关键字。我错过了什么吗? – herteladrian
这有点野蛮,但如果你只有4个你发布的关键字应该没问题。然而,远不止这些,而且这与斯科特的回答相比更加不合适!我看到他的回答后,就把我留下来作为概念证明。我使用Excel中的一些虚拟数据对它进行了测试,并打印出您在问题中所要求的(我认为) - 列表中单元格中的单词列表。对于多个关键字,斯科特绝对是更好的选择! – ZombieShellback
您可以遍历关键字数组并搜索每个关键字的每个问题。一个简单的方法是将找到的关键字粘贴到行的每个后续列中,并将列表连接成一个单元格,用逗号分隔;我觉得这比将所找到的值存储为变量更简单,然后从编码角度以逗号分隔的字符串完成搜索后粘贴它们。 – Cyril