如何在唯一ID的帮助下将工作表1数据映射到工作表2?

我创build了一个带有属性IDNAME的Excel工作表。

表1:

在这里输入图像说明

在另一张表中,我有一个随机的名字,他们必须映射到正确的ID与SHEET-1数据的参考。

表2

在这里输入图像说明

突出显示的值是手动input的。 有没有任何公式可以自动填充数据。

注意:上面的数据是样本数据集和原始数据在图表2中不同。第二个表格中将有超过2列。

这是一个非常通用的表单之间的查找公式。 它从查找表的A列中查找A列中的键,并返回与当前列名称相同的列上的值(标题在第7行)。查找键必须位于查找的左侧值或vlookup不起作用:

 =VLOOKUP($A:$A,'Lookup sheet'!$A:$ZZ,MATCH($7:$7,'Lookup sheet'!$7:$7,0),FALSE) 

或者,如果查找表中的值(在A:A中)在键(D:D中)的左侧,则需要知道值的列:

 =INDEX('Lookup sheet'!$A:$A,MATCH($E:$E,'Lookup sheet'!$D:$D,0)) 

使用VBScript后,我得到了我的解决scheme。

 Private Sub GetID_Click() Set objFSO = CreateObject("Scripting.FileSystemObject") Set objDefaultID = ThisWorkbook.Sheets.Item("DefaultIDs") Set objGetID = ThisWorkbook.Sheets.Item("GetIDs") iDefaultRC = objDefaultID.UsedRange.Rows.Count iDefaultCC = objDefaultID.UsedRange.Columns.Count iGetRC = objGetID.UsedRange.Rows.Count iGetCC = objGetID.UsedRange.Columns.Count For i = 1 To iGetCC If objGetID.Cells(1, i) = "Name" Then iGetNameCol = i ElseIf objGetID.Cells(1, i) = "ID" Then iGetIDCol = i End If Next For i = 1 To iDefaultCC If objDefaultID.Cells(1, i) = "Name" Then iDefNameCol = i ElseIf objDefaultID.Cells(1, i) = "ID" Then iDefIDCol = i End If Next For i = 2 To iGetRC For j = 2 To iDefaultRC If objGetID.Cells(i, iGetNameCol) = objDefaultID.Cells(j, iDefNameCol) Then objGetID.Cells(i, iGetIDCol) = objDefaultID.Cells(j, iDefIDCol) End If Next Next End Sub 

在这种情况下,我会做的只是切换一个表中的字段,以便他们在相同的顺序,然后执行一个vlookup。 我会这样做,因为我有能力篡改头订单。 不知道你是否也这样做,但最好把所有事情都组织起来。

如果(ISNA(VLOOKUP(A2, 'Sheet 1中',A:B,2,FALSE)), “”,VLOOKUP(A2, 'Sheet 1中',A:B,2,FALSE))

*将sheet1中的标题顺序切换为第一列的名称,然后是第二列的id

我的解决scheme是将两张表放入MS Access并执行联接查询。 特别是如果桌子很大。 这就是我已经做了很多次,这就是为什么我总是得到包含MS Access的Office版本。 花几分钟,这是值得的努力。