匹配表中的值并在列上打印结果

时间:2009-10-28 00:19:04

标签: excel-vba excel vba

我想构建一个excel VBA程序来查找表中的所有匹配值并在列上打印查找...我尝试使用vlookup但只给了我找到的第一个位置...而我我想要所有的发现。

这是一个例子: 我的桌子从A2开始

  • A栏(编号)
  • 0084
  • 0084
  • 0085
  • 0085
  • 0086
  • 0087

  • B栏(位置)

  • 12AC5
  • 16AC5
  • 02AC5
  • 06AC5
  • 01DC5
  • 11DC5
在D栏上的

我粘贴我正在寻找位置的值.....在F栏上会给我找到符合我要求的所有位置...按升序或任何顺序

例如我正在寻找2个数字的位置:

  • D栏(我粘贴了我在那里看到的位置的位置
  • 0084
  • 0087

我希望看到结果:

  • 列F(找到位置)
  • 12ac5
  • 12bd5
  • 16ac5

非常感谢任何帮助。

干杯, JFFC excel VBA

enter code here

1 个答案:

答案 0 :(得分:0)

需要澄清。你是:

想要搜索多个值(在A列中),将所有相应的值(在B列中)返回到F列?

这方面的一个例子是:

A,B,D,F
1,loc1,1,LOC1
1,loc2,2,LOC2
2,loc3 ,, loc3
3,loc4 ,,
3,loc5,,
4,loc6 ,,,

显示如果您搜索1和2(在D列中),您将返回Loc1,loc2和loc3,因为这些是与数字1和2匹配的所有位置?

如果这不是你想要做的事情那么我很困惑

实现这一目标的宏:

Sub FindLocations()

Dim ValueCell As Range
Dim SearchCell As Range
Dim ResultCounter As Integer
Dim ValueCol, LocCol, SearchCol, ResultCol As Integer

ValueCol = 1 'Look for the values in this column'
LocCol = 2 'Locations are in this column'
SearchCol = 4 'The search values are in this column'
ResultCol = 6 'Spit out the results in this column'

ResultCounter = 2

For Each ValueCell In Range(Cells(2, ValueCol), Cells(ActiveSheet.UsedRange.Rows.Count, ValueCol))

    For Each SearchCell In Range(Cells(2, SearchCol), Cells(ActiveSheet.UsedRange.Rows.Count, SearchCol))
        If SearchCell.Value = ValueCell.Value Then
            Cells(ResultCounter, ResultCol).Value = Cells(ValueCell.Row, LocCol).Value
            ResultCounter = ResultCounter + 1
            Exit For
        End If
    Next
Next
End Sub

将其粘贴到Excel VBA屏幕(Alt + F11)并运行它(或将其链接到按钮)每当您想要搜索时单击它

这样的结果如下: Excel Example http://img97.imageshack.us/img97/9310/excelexample.jpg