Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 匹配表中的值并在列上打印结果_Excel_Vba - Fatal编程技术网

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

Excel 匹配表中的值并在列上打印结果,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个

我想建立一个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 excelvba

enter code here

需要澄清。您是否:

要搜索多个值(在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)中,并在需要搜索时运行它(或将其链接到按钮),然后单击它

结果如下所示:

您的示例数据令人困惑。或许可以将您的数据粘贴到csv版本,并获得预期结果???感谢Christian的提示…我尝试了许多方法来改进它…我认为这是我能做的最好的…为内置的“高级过滤器”干杯可以做到这一点-请看,谢谢…我一直在查看microsoft网站…我将继续使用“高级过滤器”,到目前为止还没有最新消息…干杯JFC您的第一部分是正确的…“A列”是我在表中的引用,相应的值在(B列)“F列”是我的输出…“D列”这是我的要求…所以计划是…如果我想得到一些数字的输出,我通过“D列”上的数字…它将搜索并与a列匹配…当它找到时,它将抓取“B列”上的内容并粘贴到“F列”,这与查找公式相同…我在“D列”上有一个数字,它将查找“a列”…如果是匹配项,将获取“B列”上的值并在“F列”上打印…我认为查找对我不起作用的原因是,on为我提供了在“a列”上找到的第一个匹配值…它不会继续搜索下一个匹配值…顺便说一句,“D列”和“F列”不匹配…“D列”是我的输入…“F列”是我的输出…当然还有“A列”和“B列”是表格的一部分…谢谢你的时间..干杯JFC唯一的excel方法是VBA。当你想通过一个操作更改多个单元格时,你需要一个宏。你要找的宏是a列中每个范围上每个循环的a。如果单元格是你要找的值,请在B列中获取该值,将其粘贴到F列中,继续使用粘贴在上面的VBA宏下面的代码。您可以通过更改以Col结尾的变量来更改列,代码中的注释应该可以解释这一点。感谢一百万…它扫描超过14000多行非常快。手动执行此操作通常需要数小时…这太棒了…再次感谢..干杯JFC