Excel的VB – 多列如果包含string然后

我看了一堆这样的问题,但我只find公式和VB示例,似乎不检查列中的单元格的值。

我可以在Excel中导出以下公式:

=IF(AND(ISNUMBER(SEARCH("Cat",R2)),OR(ISNUMBER(SEARCH("5E",R2)),ISNUMBER(SEARCH("6",R2))), ISNUMBER(SEARCH("Patch",R2)), ISNUMBER(SEARCH("Cables",R2))), "CAT 5E Ethernet Cables") 

问题是这个公式只检查500个可能值中的1个。 这不是生产性的。 另外,当我检查整行时,我必须使它成为一个大公式,因为如果我不这样做,公式会覆盖前面公式的结果…

所以,Visual Basic …我想我可能有更好的运气脚本某种IF ELSECASE语句。 我只是不明白如何在Excel中做到这一点。 我需要达到与上述公式相同的目的,但是不是检查一组条件,

我需要检查多个,并根据每个条件的结果填充科技专栏。

我发现这个网页,只是提到Excel,并显示一个VB IF – ELSE语句。 我怎样才能使这个声明检查Excel列?

我尝试在这篇文章中select的答案没有运气:

  Private Sub UpdateCategories() Dim x As Long For x = 1 To 5000 If InStr(1, Sheet1.Range("$B$" & x), "cat") > 0 And InStr(1, Sheet1.Range("$B$" & x), "5e") > 0 Then Sheet1.Range("$T$" & x) = Sheet1.Range("$T$" & x) & "CAT 5E Ethernet Cables (Test)" End If Next End Sub 

任何帮助表示赞赏。 提前致谢!

假设你select使用数据表格来比较你的string的路线。

你需要有一张看起来像这样的表(也许这不是你想要的,因为我没有完全理解你的数据是怎么样的,但是这个想法依然存在)。 如果需要,您可以在第三栏中input子类别,也可以在类别中input子类别。

列A | B栏

关键字|类别

CAT | ATX案例

5e | Mini-ITX机箱

重要的话| MicroATX案例

这需要手动填写。 我不确定您正在查看的数据量。 如果您可以高效地复制/粘贴内容,这取决于您的数据的forms,可以非常快速。

当你有这个,使用这个代码循环。 我假设数据表在Sheet1,列A和B,值在Sheet2,列A中。

 dim listLength as integer 'number of values to look at dim i as integer dim dataLength as integer 'number of keywords dim j as integer dim keyword as string dim value as string listlength = Sheet2.Cells(Rows.Count, "A").End(xlUp).Row - 1 'assuming you start on row 2 datalength = Sheet1.Cells(Rows.Count, "A").End(xlUp).Row - 1 'assuming you start on row 2 for i = 2 to listLength + 1 value = Sheet2.Range("A")(i) for j = 2 to dataLength + 1 keyword = Sheet1.Range("A")(j) if instr(value, keyword) <> 0 then ' what happens when the keyword is present goes here end if next j next i