Excel如何选择A,出现对应的多个数据

如图,我要在另外一张表通过下拉列表选择患者姓名后,自动就列出和他相关的后续所有服药信息。

首先我模仿你给的截图在sheet1建立一些数据,如图。


然后把sheet1的表头复制到在sheet2上,并在姓名下用数据验证做一个下拉,打开数据验证,选择允许--序列,粘贴来源  张某,王某,赵某,刘某  ,如图

效果如下。



然后双击B2单元格,粘贴公式

=IFERROR(INDEX(Sheet1!$C$2:$F$11,SMALL(IF(Sheet1!$B$2:$B$11=$A$2,ROW($1:$10),999),ROW(A1)),MATCH(B$1,Sheet1!$C$1:$F$1,0)),"NULL")

。接下来这一步很关键,粘贴好后,按shift+ctrl+Enter。如果操作正确,可以看到公式自动在头尾增加了{ 和 } 符号,且已经生效,第一格筛选成功,如图


然后就是先向右填充,再拉住填充好的第一行向下填充,向下可以多拉一点,如果你的数据很多,可以避免缺漏,我给你的公式里有若没有匹配数据就输出null的参数,所以本应空白的地方用null填充了,如图。如果你不需要NULL,直接把公式里的"NULL"改成""就行。


然后大概解释一下公式的意思,方便你自己修改用。

Sheet1!$C$2:$F$11是sheet1里药品名到有效期这一整块的范围。

Sheet1!$B$2:$B$11是sheet1里姓名的范围。

$A$2是sheet2里选姓名的这一格,因为公式是在sheet2写的,所以把sheet2几个字省略掉了。

ROW($1:$10)这里的$1不用动,$10的10是比前面的Sheet1!$B$2:$B$11的11少1,就是比姓名最大行数少1,所以这里是10

999代表一个比你sheet1所有数据最大行号还要大的任意一个数,意思就是如果你有10000个姓名数据要筛选,999你改成20000就行。

剩下后面的基本不用改。只要你把sheet2的表头粘贴在第一行,顺序也可以打乱,都能用。

码字不易,望采纳。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-02-01
需要INDEX数组公式
或VBA循环代码
或高级的vba数组
=INDEX(Sheet1!C:C,SMALL(IF(Sheet1!$B$2:$B$1000=$A$1,ROW(Sheet2!$B$2:$B$1000),65536),ROW(A1)))&""
数组公式,同时按CTRL SHIFT 回车键,出现结果,然后公式右拉,下拉
假设图片sheet名为 Sheet1
另1个表的A1选择姓名
相似回答