我在一张表中创建了一个包含属性ID
,NAME
的Excel工作表。
第1页
在另一张表格中,我有一个随机的名字,并且必须使用SHEET-1
数据的引用将它们映射到正确的ID。
第2页:
手动输入突出显示的值。是否有任何公式可以自动填充数据。
注意:以上数据是样本数据集,原始数据在表2中有所不同。第二张表中将有两列以上。
答案 0 :(得分: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))
答案 1 :(得分:1)
使用VBScript后我得到了解决方案。
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
答案 2 :(得分:0)
在这种情况下我要做的只是在一张纸上切换字段,使它们的顺序相同,然后执行vlookup。我会这样做,因为我有能力篡改标题订单。不知道你是否也这样做,但最好保持一切井然有序。
如果(ISNA(VLOOKUP(A2, 'Sheet 1中',A:B,2,FALSE)), “”,VLOOKUP(A2, 'Sheet 1中',A:B,2,FALSE))
*将sheet1中的标题顺序切换为第一列上的名称,然后将第二列上的ID
答案 3 :(得分:0)
我的解决方案是将两个工作表放入MS Access并进行连接查询。特别是如果桌子很大。这就是我多次这样做的原因,这就是为什么我总是得到一个包含MS Access的Office版本。需要花费几分钟时间,这是值得的。