引用具有特定标题名称的列

引用具有特定标题名称的列

我每天都会导出一个 excel 文件(源文件),我需要将此导出文件中的特定列链接到另一个 excel 文件(报告)。但源文件中的列可能会有所不同,因此我无法使用经典链接=[FileName.xlsx]Sheet!C:C

我需要“找到”字段名称(第一行)并将其下方的数据引用到报告文件。有什么想法吗?

答案1

您可以使用命名范围作为链接的目标。然后,您可以对文档的任何部分使用相同的名称,超链接将定位到该部分并选择该部分。

在此处输入图片描述

有关详细信息,请参阅文章 将 Excel 超链接修复到命名范围

答案2

使用 CELL("address" 与 INDEX(MATCH 可能会帮助您入门。您可以使用它来确定列,然后使用间接方法在公式中使用它。

在此处输入图片描述

答案3

XLOOKUP可以为您解决这个问题。

根据您在报告文件中操作数据的方式,您可能需要创建一个单独的选项卡(或该选项卡上的区域),首先按照您期望的顺序从所需的列中提取数据。您可以非常轻松地创建该“数据格式化/清理”选项卡 - 只需获取链接到原始数据的现有报告文件示例,然后按 move-tab 或 ctrl-x 将原始数据放入报告文件中。然后按照您想要的方式清理该数据(所有您想要的列都按您想要的顺序排列)。然后,您可以使用查找原始数据文件的 XLOOKUP 公式替换该实际数据。每天您都可以交换底层的原始数据文件,您的电子表格现在将自动以预定义的格式提取新数据,您的报告选项卡将链接到该格式。

要使用XLOOKUP,您只需告诉它在一行中查找特定值,然后在单个列中找到它。然后 Excel 将允许您从同一列中的任何其他行中提取数据。请参阅下面的示例,了解XLOOKUP此情况下最简单的使用方法。在这个简化的示例中,左侧的内容是原始数据,右侧的内容就像报告选项卡将处理的格式化数据。您只需将该公式放在左上角的单元格中,然后将其粘贴到右侧,即可从您想要定义的尽可能多的不同列中提取尽可能多的行。您需要输入的关键是列的名称,您需要填写该名称,我用蓝色表示。如果您不知道需要多少行,只需将其复制下来,比您认为需要的要长得多,这样您就不会错过任何东西。如果行数太大,处理时间太长,那么有办法确定原始数据中的行数,但这很少需要,所以我不会在这里讨论它。

在此处输入图片描述

该图显示:

在 中输入数据A4:D8,其中第 4 行包含列标题。

输出在 中F4:G15。感兴趣的两列,名称和城市,其标题手动输入到单元格F4和 中G4。XLOOKUP 公式输入到单元格 中F5,即输出范围的第一个非标题单元格。单元格 中的公式F5为: =XLOOKUP(F$4,$A$4:$D$4,$A5:$D5)

请注意公式中使用的锚点(美元符号),因为它对于公式在整个输出范围内正常工作至关重要。

答案4

如果可能的话,只需在源文件中命名列引用,例如数据1(使用公式>定义名称),然后在目标表中使用:

=[FileName.xlsx]Sheet!data1

数据1当您在工作表中插入或删除新列时,它将自动移动或发生其他更改。

仅供参考,使用整列引用 ($C:$C) 通常是一个非常糟糕的主意,因为每次调用时 Excel 都需要将所有约 100 万个单元格加载到内存中。幸运的是,您可以定义数据1就像说的那样=$C$1:INDEX($C:$C,COUNTA($C:$C))。这被称为动态命名范围并将返回对 C 中 USED RANGE 的引用(假设连续数据没有空格)。虽然它也使用整个列引用,但 Excel 巧妙地仅在 C 中的源数据发生变化时才重新计算此命名范围(这是一个非挥发性公式)。即使您多次调用命名范围,使用的范围也已经计算完毕,并且答案可供使用,且不会造成巨大的内存损失。

相关内容