我正在尝试在 Excel 中完成一项奇怪的任务,但不知道如何去做。我在工作中使用 Excel 2007,并且了解非常基本的 vba。
我想要自动化一个流程,一个人获取三个电子表格并将其中的某些数据转储到一张主表中。这三个电子表格的列顺序每个月都会有所不同,因此不幸的是,我无法仅对 vlookups 进行编程来运行并获取数据。
我可能是错的,但看起来 Vlookup Match、Index Match Match 等也不起作用,因为它们仍在引用单元格。 我基本上需要一些东西来根据列中的文本而不是其位置来查找列,因为位置会改变,但文本将始终是相同的。
我有两个想法,但我不知道它们是否有效,也不知道从哪里开始实施它们:
谁能帮助我指明完成这项任务的正确方向?非常感谢你的帮助。
编辑示例
我尝试将内容转储到的主模板将包含 ID# 和空列:
ID# AltID# Deal
1
2
3
4
5
Run Code Online (Sandbox Code Playgroud)
然后另一个电子表格可能看起来像这样
ID# AltID# Deal
1 10101 AAAA
2 20202 BBBB
3 30303 CCCC
4 40404 DDDD
5 50505 EEEE
Run Code Online (Sandbox Code Playgroud)
我当然可以进行查找,但问题是下个月,第二个电子表格中的这些列将不会以相同的顺序位于相同的位置。它们可能一直在 DD 列或其他什么地方。因此,我需要一个公式来查找它们,无论列的位置如何。只需通过标题文本匹配它们即可。我希望这能澄清...
如果结合使用,VLOOKUP您MATCH可以根据列名而不是索引进行搜索。请记住,该MATCH函数返回匹配的数字索引。我们假设您的数据如下所示:
NAME DAY1 DAY2 DAY3
Bob 123 345 567
Tim 456 789 998
Run Code Online (Sandbox Code Playgroud)
返回 Tim 的 DAY2 列的功能 Vlookup 如下所示:
=VLOOKUP("Tim", A2:D3,MATCH("DAY2",A1:D1,0),FALSE)
Run Code Online (Sandbox Code Playgroud)
一些注释。在我用文字进行硬编码的地方,您可以使用单元格引用。