我正在寻找我认为根据标准编制名单列表的非常简单的公式。例如,我将在A列中列出50个员工姓名,然后在B列中的每个名称旁边显示“Y”或“N”。然后,我希望在电子表格列表中有另一个选项卡,每个人都有名字。列B中的“Y”值。我不希望新选项卡列表中的名称之间出现空行(这就是为什么我没有成功使用IF语句)。我还想避免手动过滤掉空白行。
答案 0 :(得分:0)
让我们说你的第一张是Sheet1 在a1上的工作表2上输入:
=IF(ISERROR(INDEX(Sheet1!A:A,MATCH("Y",Sheet1!B:B,0))),"",INDEX(Sheet1!A:A,MATCH("Y",Sheet1!B:B,0)))
在a2上输入:
=IF(ISERROR(INDEX(INDIRECT("Sheet1!A"&MATCH(A1,Sheet1!A:A,0)+1&":A50"),MATCH("Y",INDIRECT("Sheet1!B"&MATCH(A1,Sheet1!A:A,0)+1&":B50"),0))),"",(INDEX(INDIRECT("Sheet1!A"&MATCH(A1,Sheet1!A:A,0)+1&":A50"),MATCH("Y",INDIRECT("Sheet1!B"&MATCH(A1,Sheet1!A:A,0)+1&":B50"),0))))
然后将第二个公式拖下来。
请注意,我假设您的第一张纸在您写完时有50行,否则需要进行其他修改。
答案 1 :(得分:0)
您正在寻找的公式非常复杂,需要循环计算。出于这个原因,不建议使用数百或数千个名字的长列表,但是50个名字的列表应该没有明显的困难。
使用Sheet1的A2:A51中的名称,在工作表中使用此公式,以获取 Y 名称。
=IFERROR(INDEX(Sheet1!$A$2:$A$51, AGGREGATE(15, 6, ROW($1:$50)/(Sheet1!$B$2:$B$51="Y"), ROW(1:1))), "")
根据需要填写。请注意,AGGREGATE¹ function返回 A2 中的位置:A51 ROW(1:50)
。
检索非 Y 名称应该是将主要条件更改为(Sheet1!$B$2:$B$51="N")
或(Sheet1!$B$2:$B$51<>"Y")
的简单问题。
对于XL2010之前的情况,此标准公式执行相同的过滤检索。
=IFERROR(INDEX(Z!$A$2:$A$51, SMALL(INDEX(ROW($1:$50)+(Z!$B$2:$B$51<>"Y")*1E+99, , ), ROW(1:1))), "")
¹ Excel 2010引入了AGGREGATE function。早期版本不提供。