2017-07-25 85 views
1

我有一个面试回答列表,并希望从面试问题旁边的列中提取关键字(来自定义的关键字列表)并列出它们(用逗号分隔)。请参阅图片以供参考。从Excel或Google电子表格列中提取关键字

我可以使用公式吗?或VBA?或谷歌床单脚本/附加?

谢谢你的帮助! spreadsheet

+0

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

回答

4

在Excel:

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

作为阵列式。在退出编辑模式时,需要使用Ctrl-Shift-Enter而不是Enter键确认。

enter image description here


如果您没有访问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)))) 

enter image description here

+1

我希望我能够投票答复这个答案! –

+0

谢谢斯科特。我使用了Google表格版本,效果很好。 – herteladrian

+0

这看起来像一个Array Formula @ScottCraner。 这样我只需要将公式粘贴到一个单元格(B2)中并自动填充。 – herteladrian

0

我尝试添加这是一个评论,但我没有信誉呢! 无论如何,我想我找到了你正在寻找的东西。在你的例子中,你会想要像

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

并把它放在你的输出单元格中。

Source

编辑:我看到我张贴这种斯科特3分钟打我后。但是,它们的做法略有不同,所以我也会把它放在一边。

+0

这似乎并不像我所需要的那样。你的代码看起来像它需要我硬编码每个关键字。我错过了什么吗? – herteladrian

+1

这有点野蛮,但如果你只有4个你发布的关键字应该没问题。然而,远不止这些,而且这与斯科特的回答相比更加不合适!我看到他的回答后,就把我留下来作为概念证明。我使用Excel中的一些虚拟数据对它进行了测试,并打印出您在问题中所要求的(我认为) - 列表中单元格中的单词列表。对于多个关键字,斯科特绝对是更好的选择! – ZombieShellback

相关问题