对于工作表/表格:
+--------+-------------+------------+----------------+
| Person | Diag1 | Diag2 | Diag3 |
+--------+-------------+------------+----------------+
| A | 431 - TB | 652 - PLA | |
| B | 614 - Cough | 884 - Cold | 952 - Headache |
| C | 747 - BLA | 949 - POP | |
+--------+-------------+------------+----------------+
我有一个查阅列:
+------+
| Diag |
+------+
| 431 |
| 650 |
| 949 |
| 555 |
| 484 |
+------+
对于每个人,如果Diag查找列中的任何数字位于Diag1,Diag2或Diag 3中的任何列中,则该人将从原始表中选择,其中所有关联列仅包含其中的数字。
在这种情况下,样本输出:
+--------+-------+-------+-------+
| Person | Diag1 | Diag2 | Diag3 |
+--------+-------+-------+-------+
| A | 431 | 652 | |
| C | 747 | 949 | |
+--------+-------+-------+-------+
答案 0 :(得分:1)
这可以用公式来完成,尽管这些公式并不是最漂亮的。使用您的示例数据,让我们说您有这样的设置:您的原始表位于A:D列,您的查阅列" Diag"在F列中,您的结果在H:K
列中在单元格H2中,向下复制的是 数组 公式。请注意,必须使用 Ctrl Shift Enter 确认数组公式,而不仅仅是 Enter 。您已经知道它已经正确完成,因为在公式栏中您会看到它被花括号{}包围。不要试图手动放入大括号。
=IFERROR(INDEX(A:A,SMALL(IF(ISNUMBER(FIND($F$2:$F$6,$B$2:$D$4)),ROW($B$2:$D$4)),ROW(H1))),"")
在单元格I2中,上下复制是这个常规公式(不需要数组输入):
=IF(H2="","",IF(VLOOKUP($H2,$A:$D,MATCH(I$1,$A$1:$D$1,0),FALSE)="","",--TRIM(LEFT(SUBSTITUTE(VLOOKUP($H2,$A:$D,MATCH(I$1,$A$1:$D$1,0),FALSE),"-",REPT(" ",999)),999))))