编按:哈喽,大家好!今天分享一位群友的问题,大致需求是要将excel中的数据按照指定的数量进行重复。问题一经发布,得到的回答大多是让这位小伙伴使用VBA来解决,但是对于一般的职场人士而言,能掌握VBA的可以说是寥寥无几。那除了VBA外还有没有其他的解决方法呢?答案是肯定的。今天老菜鸟就给大家分享一个使用常用函数就能解决这个问题的妙招,一起来看看吧!
*********
今天在群里看到一位群友的问题,要求很简单,将A列数据整理为B列的效果,如图所示:
为了便于理解问题,将数据按颜色进行了分类,简单来说,A列是对品牌、型号和数量进行合并后的一个描述,现在需要按照数量将数据进行拆分。
为什么会有这样的问题我们不做讨论,但是如果遇到这样的问题应该怎么解决,才是我们关注的重点。
问题一发出来,大多数回复都是用VBA解决,但对于一般的职场人士来说,掌握VBA这个技术的寥寥无几,通常我们只会几个函数,一些基础操作而已,那么这个问题还有救么?
其实只要搞明白问题的特点,解决的方法总是有的,下面就和老菜鸟一起尝试通过一些基本的函数和操作来处理这个貌似只有VBA才能解决的问题吧。
***
解决这个问题大致上分为以下几个步骤:
第一步:提取数量
如果你使用的是Excel2013及以上版本的话,这个就很容易,输入第一个数字,回车后按Ctrl+E组合键就可以完成。
如果你的版本还没有这个功能,也不用灰心,因为上图中数字出现的位置还是比较有规律的,用公式提取也是完全可以的。
公式:=SUBSTITUTE(MID(A2,FIND("匹/",A2)+2,9),"台",""),结果如图所示:
这个公式也是提取类问题的一个常用套路,首先找到"匹/"这个内容在单元格中出现的位置,然后再用MID函数提取出“3台”,最后用SUBSTITUTE函数将"台"这个字替换为空,就得到了所需要的数字。
提取数字的思路有很多,只要得到需要的结果就可以了。
第二步:得到一组数字,为第三步做准备
这一步就很简单了,在C1单元格输入1,C2单元格输入公式:=B1+C1,然后下拉得到一组数字,操作过程如图所示:
得到这么一串数字有什么用呢?看完第三步操作就明白了。
第三步:利用LOOKUP函数按照指定的重复数量排列
公式=LOOKUP(ROW(A1),$C$2:$C$5,$A$2:$A$5)的作用很明显,就是把A列的内容按照数量重复排列了出来。
这个公式利用了LOOKUP的基本套路,不熟悉这个套路的小伙伴可以看看往期教程。
简单分析一下公式的原理,首先,在这个公式中,查找值(也就是第一参数)不是固定的,而是用了ROW(A1),这样公式在下拉的时候,查找值就会依次变成1、2、3……
条件区域使用的是我们在上一步中得到的那组数字,LOOKUP有个特性,当LOOKUP函数找不到查找值时,会与查找区域中小于或等于查找值的最大值进行匹配。
换句话说,查找区域中只有1、4、6、8这四个数字,当查找值为1、2、3的时候,查找区域中小于这三个数字的只有1,因此得到的就是结果区域(也就是第三参数)中的第一个值。
以此类推,当查找值为4、5的时候,小于这两个数字的有1和4,二者中最大的是4(是条件区域中的第二个数),因此得到的就是结果区域中的第二个值。
第三步完成后,结果已经非常接近最终的目标了,最后一步只需要将数量都变成1即可。
第四步:将产品数量变为1
还是使用一个公式来实现,公式为:=LEFT(D2,FIND("匹",D2))&"/1台"
公式的作用就是用LEFT+FIND函数组合将D列中"匹"字之前的内容提取出来,然后统一添加"/1台",就得到了最终的结果。
总结:遇到一些相对复杂的问题时,首先要理清问题的要点,利用自己已经掌握的技术一点一点去实现,能达到目的的一切方法都值得一试。
****部落窝教育-excel单元格重复****
原创:老菜鸟/部落窝教育(未经同意,请勿转载)