要根据此数据表,提取出"市场部"的所有员工编号,可在I2单元格中输入以下公式并向下复制添补:
=IF(ROW(1:1)>COUNTIF(C:C2,"市场部"),"",INDEX(A:A2,SMALL(IF(C:C2="市场部",ROW(:2)), ROW(1:1))))
这是一个数组公式,在输入完成时必须同时按下<Ctrl+Shif+Enter>组合键
(图片来自网络侵删)分几个部分来理解这个公式:
=ROW(1:1)>COUNTIF(C$2:C$102,"市场部")
此部分通过COUNTIF函数来对C列中的"市场部"进行计数,然后与公式所在的行号ROW进行比较。ROW(1:1)利用了引用的相对性,在公式向下复制的过程中会依次变为 ROW(2:2)、ROW(3:3)等,即返回当前是第几行公式。
这部分公式与 IF 函数相结合,判断公式所在行是否超过了"市场部"数据的个数,如果超出了,全体公式就返回空文本,如果没有超出再进行后面的运算。这是一种常见的容错处理办法,使得公式在向下添补过程中不会涌现缺点值,不知足条件的单元格统统显示为空文本。
=IF(C$2:C$102="市场部",ROW($2:$102))
这部分公式通过IF函数对C列的数据进行判断,如果是"市场部"就返回该行的行号。这里进行的是数组运算,会同时返回一构成果,即所有知足上述条件的行号都会同时返回在一个数构成果中。
=SMALL(IF(C$2:C$102="市场部",ROW($2:$102)),ROW(1:1))
这部分公式在前面公式的根本上用SMALL函数来依次提取前面得到的数构成果中的各个行号,个中第二个参数ROW(1:1)会随着公式的向下复制而返回一个递增的数值,因此根据公式所在行的增大,这里取得的知足条件的行号也会依次增大,这样就可以毫无遗漏的将所有知足条件的行号逐个取得。
=INDEX(A$1:A$102,SMALL(IF(C$2:C$102="市场部",ROW($2:$102)),ROW(1:1)))
这部分公式用INDEX函数根据前面公式所得的行号来详细定位A列中的员工编号数据。完全公式的运算结果如图所示。
学会了这些函数吗?当前有的通信可能对这些函数特殊陌,没紧要
点击一下视频可以节制办公中的常用函数技巧