笔者所在单位今年实行了全国
假如考生刘XX合格1科,有1科的合格证,考生王XX合格了3科,也同样取得了一个合格证书,合格证显示了合格的3个模块(图1)。为方便查询及便于考生领证签名,需要将图1中相同档案号考生的合格模块进行合并,模块之间用“/”分隔(图2),那么如何实现上述效果呢? 由于相同的档案号有2个、3个和4个三种情况,因此,要合并的模块数不是固定的,要解决此类问题需要用数组公式。


具体方法如下:
一、定义名称
为简化公式,需要对引用单元格区域设置名称。
执行“插入→名称→定义”命令,打开“定义名称”
二、输入公式
首先在
“=IF(ISERR(INDEX(Data,SMALL(IF(Code=$A2,ROW(code)),1))),"",INDEX($C:$C,SMALL(IF(code=$A2,ROW(code)),1))&"/") ”。该公式首先对A列进行判断,如果A2单元格内容存在于Code区域,则返回该单元格行号,如果存在重复,则取最小的行号。再用函数INDEX()选取该行对应的Data区域单元格内容,并用"/"分隔。为避免出现错误值,这里还使用了信息函数ISERR(),如果出现错误值,则为空白,否则为公式显示的内容。公式输入完成后,按“Ctrl+Shift+Enter”组合键即可。因为相同
F2单元格:=IF(ISERR(INDEX($C:$C,SMALL(IF($A$2:$A$21=$A2,ROW($A$2:$A$21)),2))),"",INDEX($C:$C,SMALL(IF($A$2:$A$21=$A2,ROW($A$2:$A$21)),2))&"/") G2单元格: =IF(ISERR(INDEX($C:$C,SMALL(IF($A$2:$A$21=$A2,ROW($A$2:$A$21)),3))),"",INDEX($C:$C,SMALL(IF($A$2:$A$21=$A2,ROW($A$2:$A$21)),3))&"/")
H2单元格: =IF(ISERR(INDEX($C:$C,SMALL(IF($A$2:$A$21=$A2,ROW($A$2:$A$21)),4))),"",INDEX($C:$C,SMALL(IF($A$2:$A$21=$A2,ROW($A$2:$A$21)),4)))
以上公式输入完成后都要按“Ctrl+Shift+Enter”组合键结束公式输入。然后在
所有公式输入完成后,选择D2:I2单元格区域采用拖动复制的办法,将公式复制到相应区域。这样就完成了相应数据的合并。最后还需要删除公式,具体方法是:复制所有含公式的区域,执行“编辑→选择性粘贴”命令,在“选择性粘贴”对话框中,选择“数值”选项即可。
完成上述操作后还没达到图2的效果,还需使用公式将重复的数据行删除。因此,在