表一中,A列是姓名,B列是电话号码,(同一名字有多个号码),如何在表二中输入名字体现全部号码?

如题所述

假定sheet2 a列是姓名,b列至f列显示要该姓名对应的所有电话号码
在sheet2表的b2单元格输入:
=index(sheet1!$b:$b,small(if(sheet1!$a$2:$a$9999=$a2,row($2:$9999),4^8),column(a1)))&""
数组公式,同时按ctrl+shift+enter三键结束,下拉右拉来自:求助得到的回答
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-06
在表二插入一命令按钮,并对其Click事件编程:
Private Sub CommandButton1_Click()
Dim rag As Range
Range("A2:A65536").ClearContents
i = 2
For Each rag In Worksheets("表一").Range("A:A")
If rag = "" Then Exit For
If rag = Range("A1") Then
Range("A" & i) = rag.Offset(, 1)
i = i + 1
End If
Next
End Sub
假定在表二的A1输入姓名,则他在表一的电话号码将显示在A列自A2起的单元格。追问

有简单点的函数公式吗?本来想用VLOOKUP,但那只能显示一个号码,或者能不能用数组公式
(我不会)?

追答

假定表一长100行,第一行为表头。
假定在表二的A1输入要查找的姓名(如:张三、李四)
在A2单元格输入如下数组公式:
=IF(ISERROR(INDEX(表一!$B$1:$B$100,SMALL(IF(表一!$A$2:$A$100=表二!$A$1,ROW(表一!$A$2:$A$100),FALSE),ROW()-1))),"",INDEX(表一!$B$1:$B$100,SMALL(IF(表一!$A$2:$A$100=表二!$A$1,ROW(表一!$A$2:$A$100),FALSE),ROW()-1)))
下拉足够行

第2个回答  2012-06-06
用Vlook函数