我以 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 引用将稍微错位。)