根据第二个工作簿中的映射显示一个工作簿中的数据

时间:2018-02-12 16:38:03

标签: excel excel-formula excel-2010 worksheet-function

我真的在这里碰到了一堵墙,并希望有一些比我更有优秀知识的人能指出我正确的方向。 已经坚持这个问题很长一段时间了,到目前为止我的Google技能还没有能够指出我的解决方案。我无法在其他地方找到它,但如果是,请指出我的方向。

我有3种不同的工作簿。

  • RAW源文件

RAW source document

  • 制图文件

Mapping document

  • 目标文件

Destination document

我希望根据映射文档中定义的映射将数据从源文档提取到目标文档。

类似

  

如果“目标文档标题=映射文档目标”

     
    

查找“RAW源文档中的映射文档源标题”
    并“显示目标文档中特定标题的所有数据”.`

  

我尝试了以下内容,但它似乎没有为我提供任何结果:

=if(vlookup(destinationdocA1;mappingdocA1:B4;2;0);vlookup(mappingdocA1;RAWdocA1:B4;1;0);"")

2 个答案:

答案 0 :(得分:0)

您可以将HLOOKUPMATCH一起使用,如:

=HLOOKUP($A$7,$A$1:$C$4,MATCH(A2,$A$1:$A$4,0),0)

答案 1 :(得分:0)

假设我有三个工作簿如下:

Source.xlsx       - has a table of data starting in `A1` (as per screenshot)
Destination.xlsx  - has column headers starting in `A1` (as per screenshot)
Mapping.xlsx      - has mapping table with destination (but see below)

您需要撤消Mapping中列的顺序以允许VLOOKUP工作:

Destination     Source
name_v          name
country_v       country
category_v      category

A2工作簿的Destination范围内添加以下公式:

=INDIRECT(CONCATENATE("[Source.xlsx]Sheet1!", ADDRESS(ROW(),MATCH(VLOOKUP(A$1,[Mapping.xlsx]Sheet1!$A$2:$B$4,2,FALSE),[Source.xlsx]Sheet1!$A$1:$C$1,0))))

将此公式拖到所有单元格中以获得所需的结果。

简单来说,我们试图找到Source工作簿的行和列引用,以找到正确的数据值。然后,我们可以利用ADDRESSINDIRECTDestination工作簿中显示它。

使用截图的工作示例。在单元格A2中,我们需要结果LEGO

> Step 1 - map the column header (e.g. what does name_v correspond to?)
VLOOKUP(A$1,[Mapping.xlsx]Sheet1!$A$2:$B$4,2,FALSE) = "name"

> Step 2 - get the column number for "name" in the source workbook
MATCH("name",[Source.xlsx]Sheet1!$A$1:$C$1,0) = 1

> Step 3 - get the row number (assumes both tables in Source and Dest start on same row)
ROW() = 2

> Step 4 - put together the address reference
ADDRESS(2, 1)  // corresponds to Range("A2")

> Step 5 - finally reference the Source workbook to pull back the correct value
=INDIRECT(CONCATENATE("[Source.xlsx]Sheet1!", ADDRESS(2, 1)) = "LEGO"