查找包含我需要的单词的行

我现在有一个有近1500行的BD。 每一行都有一串不同的字符(全部在同一个单元格内),在某些情况下,每行都有相似的单词。 例如:

Row 1: Tempera for children of color red 10 grams Row 2: Tempera for adults color black 50 grams Row 3: Tempera for children of color yellow 10 grams Row 4: Tempera for adults color black 10 grams 

我试图创build一个macros,在其中input两个或多个单词,并在每一行中search这些单词,然后解释哪些是包含两个或多个单词的行。 例如:

如果我input的话:

  • “黑色蛋彩画”:第2,4行
  • “小孩”:第1行,第3行
  • “10个蛋彩画”:1,3和4行

你可以使用下面的代码:

 Private Function SearchForOneStringInArr(oneString As String, arr() As String) As Boolean Dim i For i = 0 To UBound(arr) If InStr(1, LCase(oneString), LCase(arr(i))) = 0 Then SearchForOneStringInArr = False Exit Function End If Next SearchForOneStringInArr = True End Function Public Function mySearch(rng As Range, toSearch As String) As String Dim i As Integer, cell As Range i = 1 Dim strArr() As String Dim resultStr As String resultStr = "Rows:" strArr = Split(toSearch, " ") For Each cell In rng.Cells If SearchForOneStringInArr(cell.Value, strArr) = True Then resultStr = resultStr & Str(i) & " , " End If i = i + 1 Next mySearch = resultStr End Function 

使用以下公式:

 =mySearch(A1:A4, "black tempera") =mySearch(A1:A4, "children") =mySearch(A1:A4, "10 tempera") 

这可能不是你正在寻找的东西,但是一种方法,而不是从头开始编写一个macros,就是使用像这样的一个串联函数来连接一个数组公式:

 =myconcat(",",IF((1+ISBLANK(B1)-ISERROR(SEARCH(B1,$A$1:$A$4)))*(2-ISBLANK(B1)-ISBLANK(C1))*(1+ISBLANK(C1)-ISERROR(SEARCH(C1,$A$1:$A$4))),ROW($A$1:$A$4),"")) 

其中要search的string在A1:A4中,search的字词在B1和C1中。

公式必须在D1中用Ctrl Shift Enterinput并下拉。

在这里输入图像说明