【发布时间】:2017-12-31 19:58:34
【问题描述】:
【问题讨论】:
-
您可以循环遍历关键字数组并针对每个关键字搜索每个问题。一种简单的方法是将找到的关键字粘贴到该行的每个后续列中,并将列表连接到一个单元格中,用逗号分隔;从编码的角度来看,我觉得这比将找到的值存储为变量,然后在以逗号分隔的字符串中完成搜索后粘贴它们更简单。
标签: excel vba excel-formula google-sheets spreadsheet
【问题讨论】:
标签: excel vba excel-formula google-sheets spreadsheet
在 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))))
【讨论】:
我尝试将此添加为评论,但我还没有声誉! 无论如何,我想我找到了你正在寻找的东西。在您的示例中,您需要类似
=IF(ISERROR(SEARCH("*startup*",A1,1)),"","startup, ")
并将其放入您的输出单元格中。
编辑:我在发布此消息后看到 Scott 以 3 分钟的优势击败了我。但是,它们的执行方式略有不同,所以我也会留下我的。
【讨论】: