一、案例 如下图所示,B2:B10为一份名单,其中部分姓名出现多次。要求提取只出现一次的名字,例如“朱猪侠”出现2次,则不提取该名字。 提取结果如D列所示。 二、计算步骤 在D2单元格输入公式 =IFERROR(LOOKUP(2,1/((COUNTIF($D$1:D1,$B$2:$B$10)=0) *(COUNTIF($B$2:$B$10,$B$2:$B$10)=1)),$B$2:$B$10),"") 拖动填充柄向下复制公式。 公式解析: (1)COUNTIF($D$1:D1,$B$2:$B$10)指B2:B10中每个单元格的值在$D$1:D1单元格区域出现的次数,返回结果{0;0;0;0;0;0;0;0;0}; COUNTIF($D$1:D1,$B$2:$B$10)=0返回 {TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE} (2)COUNTIF($B$2:$B$10,$B$2:$B$10)指B2:B10中每个单元格的值在B2:B10单元格区域出现的次数,返回的结果为{1;2;2;1;2;1;1;2;1};COUNTIF($B$2:$B$10,$B$2:$B$10)=1返回的结果为{TRUE;FALSE;FALSE;TRUE;FALSE;TRUE;TRUE;FALSE;TRUE}。 (3) COUNTIF($D$1:D1,$B$2:$B$10)=0)*(COUNTIF($B$2:$B$10,$B$2:$B$10)=1返回的结果为{1;0;0;1;0;1;1;0;1}。当B2:B10单元格中的姓名只出现一次且还未被提取到D列时,返回的结果为1;否则返回0。 1/((COUNTIF($D$1:D1,$B$2:$B$10)=0)*(COUNTIF($B$2:$B$10,$B$2:$B$10)=1)) 返回值为{1;#DIV/0!;#DIV/0!;1;#DIV/0!;1;1;#DIV/0!;1}。 (4)LOOKUP(2,1/((COUNTIF($D$1:D1,$B$2:$B$10)=0) *(COUNTIF($B$2:$B$10,$B$2:$B$10)=1)),$B$2:$B$10)即 LOOKUP(2,{1;#DIV/0!;#DIV/0!;1;#DIV/0!;1;1;#DIV/0!;1},$B$2:$B$10)。LOOKUP函数表示在查找区域 {1;#DIV/0!;#DIV/0!;1;#DIV/0!;1;1;#DIV/0!;1}中查找“2”,并返回B2:B10中与查找到的值同一位置的值。LOOKUP函数会忽视查找区域中的错误值“#DIV/0!”。除了错误值,查找区域中的值是小于查找值“2”的值“1”,LOOKUP函数会查找到最后一个“1”,并返回B2:B10中与最后一个“1”同一位置的B10的值,即“易水寒”。 END |
|