我已经看了很多像这样的问题,但我只找到了公式,并且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 ELSE 或 CASE 语句。我只是不明白如何在excel中这样做。我需要实现与上面的公式相同的东西,但不是检查一组条件,
我需要检查多个,并填充 S &根据每组条件的结果 T 列。
我发现这个网页刚刚提到Excel并显示了VB IF - ELSE 语句。如何使此语句检查Excel列?
我在this post中尝试了所选答案而没有运气:
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
感谢任何帮助。提前谢谢!
答案 0 :(得分:0)
假设您选择使用数据表格与您的字符串进行比较的路线。
你需要有一张这样的表格(也许这不是你想要的,因为我没有完全理解你的数据是怎样的,但这个想法仍然存在)。如果需要,您可以在第三列中拥有子类别以及类别。
列A | B栏
关键字|类别
CAT | ATX案例
5e | Mini-ITX案例
重要的话| MicroATX案例
...
这需要手动填写。我不确定您正在查看的数据量。如果您可以有效地复制/粘贴内容,这可能会非常迅速,具体取决于您的数据形式。
如果有,请使用此代码循环。我假设数据表在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