下图A1:D3是数据源,记录的是手机的信息。其中D列的每个单元格中有好多条数据。现在的要求是将D列单元格中的每条数据拆分为一条完整的记录,结果如下表所示。
函数法
想用函数解决这个问题,还是多用辅助列吧。多走几步也没关系,总比复杂的数组公式来得好。第一,复杂的数组公式很多新手朋友看不懂;第二,数据量大的话,用数组公式卡的你想砸电脑。
=IF(ROW(A1)>SUM($E$2:$E$3),"",LOOKUP(ROW(A1)-1,$F$2:$F$3,A$2:A$3))
公式中,lookup函数是主要部分,外层的if函数是用来条件判断的,当公式下拉的序号超过D列单元格中的总数据量时,显示为空。比如,现在D列单元格中的总数据量是6,所以只需拆分为6条记录就可以了。当公式下拉到第7条时,就让它显示为空。
LOOKUP(ROW(A1)-1,$F$2:$F$3,A$2:A$3)这部分通过记录数与累加数的关系,得到了拆分后的多条记录。实际就是按指定次数重复内容的一种方法。这部分需要你慢慢体会,不清楚的小伙伴可以搜索之前的文章。
=IF(A8="","",MID(CLEAN(LOOKUP(ROW(A1)-1,$F$2:$F$3,D$2:D$3)),(ROW(A1)-LOOKUP(ROW(A1)-1,F$2:F$3))*15-14,15))
ROW(A1)-LOOKUP(ROW(A1)-1,F$2:F$3)这部分为了得到展开的序号。这两部分的对应关系如下所示,最后用mid函数从左边的结果中,取出右边相应的第几条数据。
vba代码法
https://pan.baidu.com/s/1Ae0Y4iQIFbDnLtG3o42-hw
联系客服