Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何借助唯一ID将工作表1数据映射到工作表2?_Excel_Lookup_Vlookup_Excel Match - Fatal编程技术网

Excel 如何借助唯一ID将工作表1数据映射到工作表2?

Excel 如何借助唯一ID将工作表1数据映射到工作表2?,excel,lookup,vlookup,excel-match,Excel,Lookup,Vlookup,Excel Match,我已经创建了一个excel工作表,在一个工作表中包含属性ID,NAME 第1页: 在另一个工作表中,我以随机的方式使用名称,它们必须通过引用sheet-1数据映射到正确的ID 第2页: 突出显示的值是手动输入的。是否有任何公式可以自动填充数据 注:以上数据为数据样本集,原始数据与表2不同。第二张图纸中将有两列以上 在这种情况下,我要做的就是切换一张表中的字段,使它们的顺序相同,然后执行vlookup。我会这样做,因为我有能力篡改标题命令。我不知道你是否也这样做,但最好是保持一切井然有序 If

我已经创建了一个excel工作表,在一个工作表中包含属性
ID
NAME

第1页:

在另一个工作表中,我以随机的方式使用名称,它们必须通过引用
sheet-1
数据映射到正确的ID

第2页

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


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

在这种情况下,我要做的就是切换一张表中的字段,使它们的顺序相同,然后执行vlookup。我会这样做,因为我有能力篡改标题命令。我不知道你是否也这样做,但最好是保持一切井然有序

If(isna(vlookup(A2,'Sheet1',A:B,2,FALSE)),“”,vlookup(A2,'Sheet1',A:B,2,FALSE))


*在将sheet1中的标题顺序切换为第一列上的name,然后在第二列上的id之后,在这种情况下,我要做的就是切换一张表中的字段,使它们处于相同的顺序,然后执行vlookup。我会这样做,因为我有能力篡改标题命令。我不知道你是否也这样做,但最好是保持一切井然有序

If(isna(vlookup(A2,'Sheet1',A:B,2,FALSE)),“”,vlookup(A2,'Sheet1',A:B,2,FALSE))


*在将sheet1中的标题顺序切换为第一列上的name,然后在第二列上的id之后,在这种情况下,我要做的就是切换一张表中的字段,使它们处于相同的顺序,然后执行vlookup。我会这样做,因为我有能力篡改标题命令。我不知道你是否也这样做,但最好是保持一切井然有序

If(isna(vlookup(A2,'Sheet1',A:B,2,FALSE)),“”,vlookup(A2,'Sheet1',A:B,2,FALSE))


*在将sheet1中的标题顺序切换为第一列上的name,然后在第二列上的id之后,在这种情况下,我要做的就是切换一张表中的字段,使它们处于相同的顺序,然后执行vlookup。我会这样做,因为我有能力篡改标题命令。我不知道你是否也这样做,但最好是保持一切井然有序

If(isna(vlookup(A2,'Sheet1',A:B,2,FALSE)),“”,vlookup(A2,'Sheet1',A:B,2,FALSE))


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

我的解决方案是将这两个工作表都放入MS Access并执行联接查询。尤其是如果桌子很大的话。这就是我多次这样做的原因,也是为什么我总是得到一个包含MS Access的Office版本。这需要几分钟,值得付出努力。

我的解决方案是将这两张工作表都放入MS Access中,并执行联接查询。尤其是如果桌子很大的话。这就是我多次这样做的原因,也是为什么我总是得到一个包含MS Access的Office版本。这需要几分钟,值得付出努力。

我的解决方案是将这两张工作表都放入MS Access中,并执行联接查询。尤其是如果桌子很大的话。这就是我多次这样做的原因,也是为什么我总是得到一个包含MS Access的Office版本。这需要几分钟,值得付出努力。

我的解决方案是将这两张工作表都放入MS Access中,并执行联接查询。尤其是如果桌子很大的话。这就是我多次这样做的原因,也是为什么我总是得到一个包含MS Access的Office版本。这需要几分钟,值得付出努力。

在使用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

在使用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

在使用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

在使用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

下面是一个非常通用的在工作表之间查找的公式。它从查找表中的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))

下面是一个非常通用的在工作表之间查找的公式。它从查找表中的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))

下面是一个非常通用的在工作表之间查找的公式。它从查找表中的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))

下面是一个非常通用的在工作表之间查找的公式。它从查找表中的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))

@pnuts你能告诉我公式吗?@pnuts你能告诉我公式吗?@pnuts你能告诉我公式吗?@pnuts你能告诉我公式吗?是的,这也行,但为了避免每次手工操作,你可以切换dat的方式