excel表中,输入姓名,想关联出另一个未打开的表格中的这个名字的人的所有信息

2025年03月24日 07:18
有4个网友回答
网友(1):

语法:
VLOOKUP(查找值,区域,列序号,逻辑值)
“查找值”:为需要在数组第一列中查找的数值,它可以是数值、引用或文字符串。
“区域”:数组所在的区域,如“B2:E10”,也可以使用对区域或区域名称的引用,例如数据库或数据清单。
“列序号”:即希望区域(数组)中待返回的匹配值的列序号,为1时,返回第一列中的数值,为2时,返回第二列中的数值,以此类推;若列序号小于1,函数VLOOKUP 返回错误值 #VALUE!;如果大于区域的列数,函数VLOOKUP返回错误值 #REF!。
“逻辑值”:为TRUE或FALSE。它指明函数 VLOOKUP 返回时是精确匹配还是近似匹配。如果为 TRUE 或省略,则返回近似匹配值,也就是说,如果找不到精确匹配值,则返回小于“查找值”的最大数值;如果“逻辑值”为FALSE,函数 VLOOKUP 将返回精确匹配值。如果找不到,则返回错误值 #N/A。如果“查找值”为文本时,“逻辑值”一般应为 FALSE 。另外:
·如果“查找值”小于“区域”第一列中的最小数值,函数 VLOOKUP 返回错误值 #N/A。
·如果函数 VLOOKUP 找不到“查找值” 且“逻辑值”为 FALSE,函数 VLOOKUP 返回错误值 #N/A。
下面举例说明VLOOKUP函数的使用方法。
假设在Sheet1中存放小麦、水稻、玉米、花生等若干农产品的销售单价:
A B
1 农产品名称 单价
2 小麦 0.56
3 水稻 0.48
4 玉米 0.39
5 花生 0.51
…………………………………
100 大豆 0.45
Sheet2为销售清单,每次填写的清单内容不尽相同:要求在Sheet2中输入农产品名称、数量后,根据Sheet1的数据,自动生成单价和销售额。设下表为Sheet2:
A B C D
1 农产品名称 数量 单价 金额
2 水稻 1000 0.48 480
3 玉米 2000 0.39 780
…………………………………………………
在D2单元格里输入公式:
=C2*B2 ;
在C2单元格里输入公式:
=VLOOKUP(A2,Sheet1!A2:B100,2,FALSE) 。
如用语言来表述,就是:在Sheet1表A2:B100区域的第一列查找Sheet2表单元格A2的值,查到后,返回这一行第2列的值。
这样,当Sheet2表A2单元格里输入的名称改变后,C2里的单价就会自动跟着变化。当然,如Sheet1中的单价值发生变化,Sheet2中相应的数值也会跟着变化。
其他单元格的公式,可采用填充的办法写入。
VLOOKUP函数使用注意事项
说到VLOOKUP函数,相信大家都会使用

网友(2):

Option Explicit

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error GoTo L_end
Dim cel As Range, rw As Long, col As Long, temp As String
Dim shet As Worksheet: Set shet = ThisWorkbook.ActiveSheet
Dim Eapp As Application, Ebook As Workbook, Esheet As Worksheet, f As WorksheetFunction

Dim Erw As Long, Ecol As Long
Dim i As Long
For Each cel In Target
temp = cel.Value: rw = cel.Row: col = cel.Column
If rw >= 2 And col = 1 Then

If temp = "" Then
shet.Range("B" & rw & ":h" & rw).ClearContents
Else
If Eapp Is Nothing Then
Set Eapp = New Application: Set Ebook = Eapp.Workbooks.Open(ThisWorkbook.Path & "\《山东省厂务公开条例》成绩.xls"): Set Esheet = Ebook.Sheets("Sheet1")
Set f = Eapp.WorksheetFunction
End If
If f.CountIf(Esheet.Range("B:B"), temp) > 0 Then
Erw = Esheet.Range("B:B").Find(temp, LookIn:=xlValues, lookat:=xlWhole).Row
For i = 2 To 5
shet.Cells(rw, i) = Esheet.Cells(Erw, i + 1)
Next
Else
shet.Range("B" & rw & ":h" & rw).ClearContents
End If
End If
End If
Next
Call CloseBook(Eapp, Ebook, Esheet)
Exit Sub
L_end:
MsgBox (Err.Description)
Call CloseBook(Eapp, Ebook, Esheet)

End Sub

Sub CloseBook(Eapp As Application, Ebook As Workbook, Esheet As Worksheet)
On Error Resume Next
Ebook.Close (False)
Set Esheet = Nothing
Set Ebook = Nothing
Set Eapp = Nothing
End Sub

网友(3):

调用数据必须要打开数据源。才能读入内存,并使用。
不想动手打开也可以,可以用VBA代码打开后台读取,读取完再关闭。
不过如果表格数据多,不停地打开,关闭,反而影响速度。

网友(4):

假设源数据在Sheet1中,你的源数据内容在B2:D12范围内,在表2的B2单元格内写入=VLOOKUP($B2,Sheet1!$B$2:$D$12,2,0)

注意:源数据姓名那一列需要升序排列