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

Display data from one workbook depending on mapping in a second workbook

我真的在这里碰壁了,希望 excel-知识比我多一点的人能够为我指明正确的方向。 现在已经被这个问题困扰了很长一段时间,而且我的 Google-skills 到目前为止还没有能够指出我的解决方案。我没能在其他地方找到它,但是,如果是,请指出我的方向。

我有 3 个不同的工作簿。

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

所以像

if "Destination-document heading = mapping document destination"

lookup "mapping document source heading in RAW source document"
and "display all data for the specific heading in destination document".`

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

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

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

=HLOOKUP($A,$A:$C,MATCH(A2,$A:$A,0),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

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

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

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

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

使用您的屏幕截图的有效示例。在单元格 A2 中,我们想要结果 LEGO:

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

> Step 2 - get the column number for "name" in the source workbook
MATCH("name",[Source.xlsx]Sheet1!$A:$C,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"