(Excel VBA公式)嵌套IF突出显示红色

我有一个在单元格中工作的公式,但它是一个非常长的嵌套if。 它本质上是试图检查一个单元格的多个不同的值。

A2 =这是我的描述。 B2包含嵌套的if,它在A2描述中search多个单词。 当它贯穿每个if语句时,它将打印find的单词。

我需要使用VBA将此公式设置为多个单元格,但我不确定公式为什么是错误的。 (Excel将其突出显示为红色。)有没有更好的方法来写这个?

(我已经做了两个嵌套的if一行,并使用“&_”分隔到下一行。)

Sub Search_For_Keywords() Do Until ActiveCell.Value = "" Range(B2).Activate With ActiveCell .Formula = "=IF(ISNUMBER(SEARCH(""Keyword1 "",A2,1)),""1"",IF(ISNUMBER(SEARCH(""Keyword2 "",A2,1)),""2"", & _ 

…有48个关键字,未来可能还需要添加更多…

 IF(ISNUMBER(SEARCH(""Keyword_n"",A2,1)),""n"",""No Keywords Found"")))))))))))))))))))))))))))))))))))))))))))))))" End With Loop End Sub 

更新:

另一个解决scheme(解决方法?)正在使用

 =IFERROR(INDEX(E2:E6,MATCH(D2:D6,A2:A6,0)),"Not Found") =INDEX (column to return a value from, MATCH (lookup value/column, column to lookup against, 0)) 

所以对于我来说,我有D2:D6包含关键字search,E2:E6包含每个关键字的别名,然后A2:A6举行了我想试试看,如果关键字的实际说明。

这段代码现在可以放在VBA中了,唯一的缺点是你必须有包含这些信息的列。

再次感谢所有的帮助。 其他更多的VBA特定解决scheme可以在下面find。

如果你想使用VBA,你可以使用这个简单的代码,假设你只是想find这个单词

 arr = Array("keyword1", "keyword2", "keyword3") 'List of keywords to look for For i = 0 To 2 Set c = Sheets(1).Range("a2").Find(arr(i), LookIn:=xlValues) If Not c Is Nothing Then Sheets(1).Range("b2").Value = arr(i) 'Setting the value if the keyword is found Next i 

但是,如果find多个单词,它将只打印最后一个(你可以修改代码,以防你需要)。 当然,因为这不是一个计算,每次单元格值发生变化时都需要运行代码

具体scheme:

 Sub Find_Keywords() Keywords = Array("Awesome", "hey", "world") 'List of keywords to look for Range("A2").Activate Do Until ActiveCell = Range("a14") For i = 0 To 2 Set C = ActiveCell.Find(Keywords(i), LookIn:=xlValues) If Not C Is Nothing Then ActiveCell.Offset(0, 1).Value = Keywords(i) 'Setting the value if the keyword is found Next i ActiveCell.Offset(1, 0).Activate Loop End Sub 
 Function SearchMyKeywords(rng As Range) Select Case rng Case _1st_keyword SearchMyKeywords = Whatever_You_Like Case _2nd_keyword SearchMyKeywords = Whatever_You_Like2 ... Case Else ' For all the rest SearchMyKeywords = Whatever_suitable_here End Select 

然后,你可以使用你的function,如内置function