Vba Excel VB-如果列包含字符串,则为多个
我已经看了很多这样的问题,但我只找到了公式和VB示例,它们似乎没有检查列中单元格的值 我能够在Excel中导出以下公式: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") 问题是这个公式只检
=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 ELSE或CASE语句。我只是不明白如何在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以太网电缆”,基本上我需要编写逻辑来检查两列中的关键字,并根据结果分配