Excel 2010 VBA - 搜索活动列以及#34;删除"然后"添加/保留"

时间:2015-04-16 15:08:24

标签: excel vba find

我对VBA很新,需要一些指导。我在这里和那里找到了很少的片段,但似乎无法弄清楚如何将它们放在一起。

整个脚本查看特定单元格以查看正在处理的商店编号,然后转到另一个工作表以在第2行中查找该编号。在另一个工作表中,C列包含所有商店的可能项目。该区域。一旦商店编号位于第2行,该列现在很重要,因为它列出了"删除"或"添加/保留"对于C列中列出的前面提到的项目。

在我所在的脚本中,我在sheet2上激活了标题单元格,即商店编号。下面列出了C列下的产品是否应该是"删除"或"添加/保留"。

我正在寻找有关如何搜索活动列的帮助"删除"和"添加/保留"然后暂时将产品编号从C列转移到可以在外部使用的变量。

例如,假设商店编号对应于第3组。这位于Sheet2的F列中。下面是一组特定/唯一的"删除"或"添加/保留"。第一个项目显示"删除",因此脚本应该转到C列,在C列中将找到项目编号" 51308"。它将一个变量设置为该值,然后将其传递给我的外部程序,在那里它在数据库中搜索该数字(51308)并删除它,因为它是"删除"。它将此操作写入文本文件"从第3组"中删除项目51308。现在脚本向下移动另一行,然后有#34;添加/保留"上市。返回C列(产品清单),列出" 74063"。临时变量被设置为这个新的产品编号,被传递给我的程序,数据库被检查以查看当前是否存在该数字,如果是,没有任何反应,如果它不是,它会被添加并且文本文件被写成一个新行"将74063添加到Group 3"。

那就是它。容易吧!?

这是我提到的Sheet2的截图。

screenshot

到目前为止,我有这个:

Dim rng1 As Range
Dim strSearch As String
strSearch = "Delete"
Set rng1 = Range("D:D").Find(strSearch, , xlValues, xlWhole)
If Not rng1 Is Nothing Then
    Set rng2 = rng1.Offset(0, -1)
    MsgBox rng2
    MsgBox "Find has matched " & strSearch & vbNewLine & "Corresponding cell is " & rng1.Offset(0, -1)
Else
    MsgBox strSearch & " not found"
End If

脚本找到第一个"删除"然后返回一列到C列并显示项目编号。然后我可以把它传递给我的程序没问题。 这是可以的,除了商店组可以在第2行的任何地方(不仅仅是D列)。

1 个答案:

答案 0 :(得分:0)

首先使用Match和index函数进行实验。匹配函数用于定位匹配的商店编号所在的行,index函数用于返回其他每列的值。这样您就可以将两张表中的数据连接到第一张工作表上进行处理。

通过将匹配函数放在sheet1上以找到sheet2上的匹配行,然后可以编写vba以循环使用其中包含匹配函数的列,然后读取列以检查值或将它们分配到其他位置。使用循环与查找功能将允许您有效地从一个单元格导航到另一个单元格,并克服无法轻松找到您正在寻找的下一个值的限制。