Excel - 在 CSV 文件中查找特定列,并复制到当前工作表

Excel - 在 CSV 文件中查找特定列,并复制到当前工作表

我以 CSV 格式获得常规数据导出,我喜欢将其拉入 Excel 并通过辅助列和数据透视表进行报告。

我通过链接到 csv 文件并从我感兴趣的数据列中复制单元格内容来实现此目的。

我使用类似 =if('file path[filename.csv]Sheet1'!A1<>"",'file path[filename.csv]Sheet1'!A1,"")

然后我自动填充整列。

这很有效,并将数据拉入我当前的工作表中,然后我可以在其中添加辅助列并从中运行数据透视表。每周一次,我用新的 CSV 文件覆盖 CSV 文件,然后刷新数据透视表,以生成我需要的报告。

我遇到的问题是,偶尔,制作我的源 CSV 的业务部门会在数据中添加新字段,结果,我的所有单元格引用都会被破坏,我必须去更改所有公式以适应新字段,即使我对此根本没有要求。

CSV 中的所有列都有唯一的列标题。

我想要做的是使用公式在 CSV 中找到我需要的特定列,然后将其拉入我的工作表。

Catalogue Number    Price   Purchase Date   Sales Office
1    £500.00    11-Sep  EMEA
2    £606.00    8-Aug   APAC
3    £454.00    3-Jul   NA
4    £2,132.00  29-Jan  NA
5    £548.00    30-Nov  APAC
6    £514.00    23-Apr  NA
7    £36.00     3-Feb   EMEA
8    £998.00    11-Oct  EMEA
9    £1,454.00  11-Sep  EMEA

例如,在上面的例子(虚拟数据)中,我想识别标题为“价格”的列(D1:D10),然后将整个列拉到新表中。

我尝试过使用 HLOOKUP、INDEX 和 MATCH,但不太清楚如何获取整个列。在下面的示例中,您可以看到我一直在尝试什么,虽然我可以识别正确的列,但我无法让自动填充以我所需的方式成功迭代公式。

Formula "=MATCH("Catalogue Number",5:5,0)"
Output  3

Formula "=MATCH("Price",5:5,0)"
Output  4

Formula "=HLOOKUP("Price",C1:F10,2)"
Output  500

Formula "=HLOOKUP("Price",$1:$1048576,2,0)"
Output  500
    500

Formula "=INDEX($1:$1048576,2,(MATCH("Price",$1:$1,0)))"
Output  500
    500
    500
    500
    500
    500

我正在使用 Excel 2010。

答案1

=INDIRECT("R"&ROW()&"C"&MATCH("Price",$A$1:$F$1,0),0)

这是通过创建INDIRECT()R1C1 单元格引用而不是正常的 A1 单元格引用来实现的。

行使用 来标识ROW()。列使用 来填充,MATCH()以查找相关标题的列号(从左边数,A=1)。

笔记 -确保您的MATCH搜索条件一直延伸到 A 列(即 $A$1:$F$1,即使您的列标题从 B 列开始 - 否则 R1C1 引用将稍微错位。)

相关内容