Excel中,如果有两个单元格,向其中一个输入内容,另一个会自动显示出相对应的内容。

例如:有两张表,表1中A列和B列分别储存了科室代码和科室名称,表2则是人员资料,A列为员工号,B列为姓名,C列为科室代码,D列为科室名称。我如果在表2的C
列的一个单元格中输入一个科室代码,则它同一行的D列的单元格中会显示出相应的科室名称。
那位高手知道请告诉我,我要宏的完整代码,万分感谢!答案满意的话,会另外加分的。

一、个人觉得没必要用宏来完成。先给你公式(在D2单元格输入下面的公式):
=IF(C2="","",IF(ISERROR(VLOOKUP(C2,表1!A:B,2,0)),"错误!!",VLOOKUP(C2,表1!A:B,2,0)))
公式完成后复制D2单元格,沿D列从D3向下粘贴到合适的位置。
注意:一定要用你的表1所在的工作表标签(一般为Sheet1)替换公式中的两个表1
说明:
如果C列单元格为空,同行的D列单元格也为空,
如果在表1的A列找不到C列单元格的内容,同行的D列单元格返回“错误!!”,
否则返回与表1的A列同行的B列单元格的内容。
二、VBA代码法,把下面的代码放到VBA的表2中:
Private Sub Worksheet_Change(ByVal Target As Range)
i = Target.Row
'用表2输入科室代码的首行(行号-1)替换下面i>1中的1
If i > 1 And Target.Column = 3 Then
For j = 1 To Sheet1.UsedRange.Rows.Count
If Cells(i, 3) = "" Then
Cells(i, 4) = ""
Exit For
ElseIf Cells(i, 3) = Sheet1.Cells(j, 1) Then
Cells(i, 4) = Sheet1.Cells(j, 2)
Exit For
End If
Cells(i, 4) = "错误!!"
Next
End If
End Sub
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-25
不用宏,函数轻松搞定:
在表2的D2单元格输入“=vlookup(c2,sheet1!a:b,2,0)”
注意不包含引号,然后向下填充或复制
其中sheet1是表1的名称,注意核对下追问

有疑问,我的单元格格式是文本(因为有些内容是0打头的,常用格式往往会吧打头的0去掉),这样vlookup就无法用了。有啥办法不?

追答

文本格式没影响啊,或者你发我邮箱吧,[email protected]

追问

那我如果想要反向也可以实现的话要怎么做?
就是说输入科室代码可以显示科室名称,输入科室名称可以显示可是代码。

追答

1.将表1A,B列互换

2.在表2的C2单元格输入“=vlookup(d2,sheet1!a:b,2,0)”

追问

我是希望同时实现啊,你说的只能实现单向,想要反向就得改动整个表格

追答

1.EXCEL选项中(2007,2010在主菜单,2003应该在工具菜单)公式——计算选项——启用迭加计算——次数为2
2.表1A列复制到D列,B列复制到C列

3.表2的D2单元格输入“=vlookup(c2,sheet1!c:d,2,0)”

本回答被提问者和网友采纳
第2个回答  2012-11-18
vlookup就能实现。
比如表2C1输入一个代码,那么,相应的D1的公式为
=vlookup(c1,A1,表1!A:B,2,false)
注,其中,表1是第一个表的名字,如果表1名字是sheet1那么公式中也是sheet1,注意区分英文括号和逗号。
上面的公式,如果你表1中没有表2C列填写的内容,返回的是#N/A,所以表1的代码要完善。
第3个回答  2012-11-18
在D2中输入
=VLOOKUP(C2,Sheet1!A:B,2,0)
然后向下填充就可以 
第4个回答  2012-11-18
表2的D: =vlookup(C2,表1!A:B,2,)
下拉追问

没用呀,这个函数一共需要4个参数,最后一个不用填么,有没有代码。

追答

最后一个省略就是0