vba - Excel 根据列名称而不是单元格名称查找数据

标签 vba excel vlookup

我正在尝试在 Excel 中完成一项奇怪的任务,但不知道如何去做。我在工作中使用 Excel 2007,并且了解非常基本的 vba。

我想要自动化一个流程,一个人获取三个电子表格并将其中的某些数据转储到一个主表中。这三个电子表格的列顺序每个月都会有所不同,因此不幸的是,我无法仅对 vlookups 进行编程来运行并获取数据。

我可能是错的,但 Vlookup 匹配、索引匹配等似乎也不起作用,因为它们仍在引用单元格。 我基本上需要一些东西,可以根据列中的文本而不是其位置来查找列,因为位置会改变,但文本将始终相同。

我有两个想法,但我不知道它们是否有效,也不知道从哪里开始实现它们:

  1. 将三个电子表格转换为表格,并使用表格语法引用标题(我无法使其正常工作)
  2. 可识别一切的复杂 VBA

有人可以帮我指出完成这项任务的正确方向吗?非常感谢您的帮助。

编辑示例

我尝试将内容转储到的主模板将包含 ID# 和空列:

ID#          AltID#          Deal
1
2
3
4
5

然后另一个电子表格可能看起来像这样

ID#          AltID#          Deal
1            10101           AAAA
2            20202           BBBB
3            30303           CCCC
4            40404           DDDD
5            50505           EEEE

我当然可以进行查找,但问题是下个月,第二个电子表格中的这些列将不会以相同的顺序位于相同的位置。它们可能一直在 DD 列或其他什么地方。因此,我需要一个公式来查找它们,无论列的位置如何。只需通过标题文本匹配它们即可。我希望能够澄清...

最佳答案

如果将 VLOOKUPMATCH 结合使用,您可以根据列名称而不是索引进行搜索。请记住,MATCH 函数返回匹配的数字索引。我们假设您的数据如下所示:

NAME    DAY1    DAY2    DAY3
Bob     123     345     567
Tim     456     789     998

返回 Tim 的 DAY2 列的功能 Vlookup 如下所示:

=VLOOKUP("Tim", A2:D3,MATCH("DAY2",A1:D1,0),FALSE)

一些注释。在我用文字进行硬编码的地方,您可以使用单元格引用。

关于vba - Excel 根据列名称而不是单元格名称查找数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28054120/

相关文章:

vba - 如何使用 VBA 扩展多列的宽度?

excel - Excel 中的 VLOOKUP 问题

vba - '.Find'/'.FindNext' 重复查找相同单元格或返回错误

excel - 通过 Excel VBA 按钮隐藏包含具有特定值的单元格的列

excel - 如果单元格包含字符串 X,则删除整行

excel - 如何使用 VBA 超越 Windows 对话框

Python通过for循环将字符串参数传递到sql执行中

excel - 公式中的动态列索引名称错误

excel - 如何跨工作簿 Excel 进行多个 Vlookup

vba - 从文档引用中取出一个词,然后用它在文档中查找和替换?