0

我在一张表中创建了一个带有属性的 excelIDNAME

表 1:

在此处输入图像描述

在另一张表中,我以随机方式命名,并且必须使用SHEET-1数据引用将它们映射到正确的 ID。

表 2

在此处输入图像描述

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

注:以上数据为样本数据集,表 2 中的原始数据不同。第二表中将有 2 列以上。

4

4 回答 4

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))
于 2016-08-11T13:30:58.737 回答
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
于 2015-10-31T15:11:00.680 回答
0

在这种情况下,我会做的只是在一张纸上切换字段,使它们的顺序相同,然后执行 vlookup。我会这样做是因为我有能力篡改标题订单。不知道你是否也这样做,但最好让一切井井有条。

if(isna(vlookup(A2,'Sheet1',A:B,2,FALSE)),"",vlookup(A2,'Sheet1',A:B,2,FALSE))

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

于 2015-10-24T17:05:33.250 回答
0

我对此的解决方案是将两张表放入 MS Access 并进行连接查询。特别是如果桌子很大。这就是我多次这样做的方式,这就是为什么我总是得到一个包含 MS Access 的 Office 版本。需要几分钟,值得付出努力。

于 2015-10-25T21:44:43.990 回答