我真的在这里碰到了一堵墙,并希望有一些比我更有优秀知识的人能指出我正确的方向。 已经坚持这个问题很长一段时间了,到目前为止我的Google技能还没有能够指出我的解决方案。我无法在其他地方找到它,但如果是,请指出我的方向。
我有3种不同的工作簿。
我希望根据映射文档中定义的映射将数据从源文档提取到目标文档。
类似
如果“目标文档标题=映射文档目标”
查找“RAW源文档中的映射文档源标题”
并“显示目标文档中特定标题的所有数据”.`
我尝试了以下内容,但它似乎没有为我提供任何结果:
=if(vlookup(destinationdocA1;mappingdocA1:B4;2;0);vlookup(mappingdocA1;RAWdocA1:B4;1;0);"")
答案 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
工作簿的行和列引用,以找到正确的数据值。然后,我们可以利用ADDRESS
和INDIRECT
在Destination
工作簿中显示它。
使用截图的工作示例。在单元格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"