Vba Excel VB-如果列包含字符串,则为多个

Vba Excel VB-如果列包含字符串,则为多个,vba,excel,Vba,Excel,我已经看了很多这样的问题,但我只找到了公式和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") 问题是这个公式只检

我已经看了很多这样的问题,但我只找到了公式和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个。这是没有成效的。另外,当我检查整行时,我必须把它变成一个大公式,因为如果我不这样做,公式会覆盖上一个公式的结果

所以,VisualBasic。。。我想我可能会更幸运地编写某种IF ELSECASE语句。我只是不明白如何在excel中实现这一点。我需要实现与上面公式相同的事情,但不是检查一组条件

我需要检查多个,并根据每组条件的结果填充S&T

我发现这个网页只提到了Excel,并显示了一个VBIF-ELSE语句。如何使此语句检查Excel列

我在中尝试了选定的答案,但没有成功:

    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

感谢您的帮助。提前谢谢

假设您选择使用数据表与字符串进行比较的路径

你需要有一张这样的表格(也许这不是你想要的,因为我没有完全理解你的数据是什么样子,但想法仍然存在)。如果需要,您可以在第三列中包含子类别以及类别

A列| B列

关键词|类别

CAT | ATX案例

5e |迷你ITX箱

重要词语|微型案例

这需要手动填写。我不确定您正在查看的数据量。如果您能够根据数据的形式高效地复制/粘贴内容,那么速度可能会非常快

当你有了这个,循环使用这个代码。我假设数据表在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
dim listLength as integer'要查看的值数
作为整数的dim i
dim dataLength作为整数的关键字数
作为整数的dim j
dim关键字作为字符串
将值设置为字符串
listlength=Sheet2.Cells(Rows.Count,“A”).End(xlUp).Row-1'假设从第2行开始
datalength=Sheet1.Cells(Rows.Count,“A”).End(xlUp).Row-1'假设从第2行开始
对于i=2到listLength+1
值=表2.范围(“A”)(i)
对于j=2到dataLength+1
关键字=表1.范围(“A”)(j)
如果instr(值、关键字)为0,则
'当关键字出现时,会发生什么情况
如果结束
下一个j
接下来我

假设您选择使用数据表与字符串进行比较的路线

你需要有一张这样的表格(也许这不是你想要的,因为我没有完全理解你的数据是什么样子,但想法仍然存在)。如果需要,您可以在第三列中包含子类别以及类别

A列| B列

关键词|类别

CAT | ATX案例

5e |迷你ITX箱

重要词语|微型案例

这需要手动填写。我不确定您正在查看的数据量。如果您能够根据数据的形式高效地复制/粘贴内容,那么速度可能会非常快

当你有了这个,循环使用这个代码。我假设数据表在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
dim listLength as integer'要查看的值数
作为整数的dim i
dim dataLength作为整数的关键字数
作为整数的dim j
dim关键字作为字符串
将值设置为字符串
listlength=Sheet2.Cells(Rows.Count,“A”).End(xlUp).Row-1'假设从第2行开始
datalength=Sheet1.Cells(Rows.Count,“A”).End(xlUp).Row-1'假设从第2行开始
对于i=2到listLength+1
值=表2.范围(“A”)(i)
对于j=2到dataLength+1
关键字=表1.范围(“A”)(j)
如果instr(值、关键字)为0,则
'当关键字出现时,会发生什么情况
如果结束
下一个j
接下来我

不用担心。在工作表的两个不同列中有字符串,我可以检查它们以确定部门和类别(对于我们的网站)。示例:如果B2中有“cat”和“5e”,R2中有“Cables”,那么部门(S列)是“Networking Cables”,类别(T列)是“cat 5e Ethernet Cables”。基本上,我需要编写逻辑来检查两列中的关键字,并根据结果为网站的每一行分配一个部门和类别。最终,电子表格将用于RMS导入。大约有500个类别。我需要检查大约3-4个关键字,以确定适当的分类,因此大约有一吨行要检查。我可以通过初步检查可能的类别来缩小条件语句的范围。在某些时候,您必须手动指示哪些类别与哪些类别相匹配。程序无法猜测。所以我建议你在一张表格中列出每一个类别,以及哪些关键字引用它们。它会很长,很无聊。在这之后,您可以有一个宏循环您的值,对于每个值,转到表,循环它,并尝试找到相应的类别。我看没有别的办法了,不用担心。在工作表的两个不同列中有字符串,我可以检查它们以确定部门和类别(对于我们的网站)。示例:如果B2中有“cat”和“5e”,R2中有“电缆”,则部门(S列)是“网络电缆”,类别(T列)是“cat 5e以太网电缆”,基本上我需要编写逻辑来检查两列中的关键字,并根据结果分配