【发布时间】:2014-08-06 13:42:52
【问题描述】:
您好,我在公司担任零件分析师。我在我们的在线目录中搜索引擎序列号,以查看网站上是否存在客户所需的信息。我每个月要检查大约三千个号码。我有一个 Excel 表,我从中复制了引擎序列号并将其粘贴到在线目录的搜索中。这是一项非常乏味的任务。我一直在研究一个宏来自动化这个过程。我在宏中有一个数组。我希望数组跳过不需要搜索的序列号。到目前为止,宏将打开浏览器到电子目录并循环遍历数组,突出显示包含数组中值的所有序列号。我现在需要数组来跳过这些值。我想对数组使用 if 语句,这样每次我运行宏时,它都会运行得更快,因为正在搜索的值的数量正在减少。
场景
- 我在 excel 中单击一个按钮,它会打开所需的文件并开始在 A 列中搜索序列号。
- 如果 F2 = Y 则跳过在目录中搜索 A2,但是如果 F2 = N 则搜索 A2
- 如果搜索A2返回所需信息,则在F2中输入Y,否则在F2中输入N,转到A3并重复过程。
我已经搜索了很多论坛,但我无法找到解决方案。我的宏在下面。我需要帮助来完成宏。我试图让数组跳过数组中的值并通过在 if 语句中添加 Not 来突出显示所有其他值。这不起作用,而是当我在 if 语句中添加“Not”时突出显示所有序列号。任何建议表示赞赏。
Sub HighlightValue()
Dim MyVals As Variant
MyVals = Array("*472908*", "*471905*", "*471914*", "*471935*", "*471917*", "*471920*", "*471933*", "*471932*", "*471934*") 'Enter all the values to search for
Application.Goto Range("A2"), False
Do Until IsEmpty(ActiveCell)
For Each esn In Selection
For i = LBound(MyVals) To UBound(MyVals)
If esn.Value Like MyVals(i) Then
esn.Interior.ColorIndex = 6 'yellow
Exit For
End If
Next i
Next esn
ActiveCell.Offset(1, 0).Select
Loop
结束子
【问题讨论】:
-
如果单元格的前 n 个字符(我猜 n = 6)与 myVals 中的值不匹配,您是否打算突出显示 A 列中的所有单元格? (您的代码已经突出显示了前 6 个字符与数组中的一个元素匹配的任何单元格 - 但是,该数组不包含与 [A2..A17] 范围内的任何单元格匹配的值 - 我刚刚将“471907 *”添加到数组 myVals 并突出显示单元格 [A13..A17])通过删除不相关的代码来更新您的问题无关紧要会使事情更清楚。 - 例如对 IE、文件夹和文件的任何引用 :)
-
是的,我想突出显示与数组不匹配的所有单元格,以测试我的最终目标。我的最终目标是跳过与数组匹配的任何单元格并检查与数组不匹配的单元格。数组中的值是序列号,不包含我正在寻找的 ATS(F 列)信息。很抱歉没有发布包含数组中值的部分。此数据样本来自 30k+ 个条目的列表。当我运行宏以突出显示数组值时,它运行完美。下一阶段是让宏使用数组来检查网站的 ATS。
标签: arrays excel ie-automation