1.问题是一门课的一个教学班可能会由一位老师到十多位老师一起完成,一个报表要求把一个教学班的所有工号合并在一个单元格,并且用分号相隔,结果那图就是最后想要得到的结果。
数据如下
最后想要的结果是这样的
2.首先想到的就是textjion函数,这个函数在office2019上可用,低版本的office要自己写,这里C3单元格中的公式如图。
3.每个开课号也就是每个教学班的工号是动态的,要确定合并区域就需要明确开始单元格,结束单元格的位置,像上面c3单元格的公式中的b3就是开始,b6就是结束。位置就确定行和列。
开始单元格的行可以用row函数,列是固定的,这个比较简单。
结束单元格的行=开始单元格的行+一个教学班的教师数-1=,因为第一行是标题嘛要减1
3.1 获取教师数,这里用countif函数
3.2 整理教师数,因为合并后一个开课号只保留一条记录,多的要删掉的。这里用一个简单的判断上下单元格是否相等,e2单元格的if函数如下,注意不要只判断教师数那一列,要把开课号和教师连接起来判断,要不然有两个教学班都是两位教师上又连续在一起就会出错,连接用&
3.3 开始单元格的行和位置
为了方便截图,先隐藏了C、D、E列,行用row函数,位置用address函数,要合并的是B列,address函数的第二个参数是2
3.4 结束单元格的行和位置
3.5 有了位置,再用indirect函数就可以返回实际内容了。以结束单元格为例,如下图K2单元格,这里写出来只是为了说明这个函数什么意思,K列和J列其实用不到,看看就删除了这两列
3.6 然后就是合并了,J3中公式如下
最后整理一下公式,删除教学辅组列,E2中的内容如下:
结果如下,筛选后删除不用的行,辅组的列就ok了。