Excel 匹配表中的值并在列上打印结果
我想建立一个excel VBA程序,从表中查找所有匹配值,并将查找结果打印到列上。。。我尝试使用vlookup,但只给出了第一个找到的位置。。。我想要所有的发现 以下是一个例子: 我的桌子从A2单元开始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个
- A列(编号)
- 0084
- 0084
- 0085
- 0085
- 0086
- 0087
- B栏(位置)
- 12AC5
- 16AC5
- 02AC5
- 06AC5
- 01DC5
- 11DC5
- D列(我粘贴了我想在那里看到的数字位置
- 0084
- 0087
- F列(找到的位置)
- 12ac5
- 12bd5
- 16ac5
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