在具体讲解这个问题之前,我敢保证,这是你从来没有见过的Excel问题。
有你从来没见过的函数!
有非常巧妙的解题思路!
有非常复杂的函数公式!
某个公司做产品促销,一共有ABCDE这5种促销产品。
顾客可任选几种促销产品,比如有的人只选了A,有的选了ABC,等等。
现在需要求得这些促销品的所有组合,以便于后期分析哪些组合更吸引用户,或者每种组合如何定价等等(当然这是后话,首先我们需要把所有组合列出来,然后才能进行下一步)。
这是个数学问题,每种产品都可以选或者不选这2种可能性,所以一共有2^5=32种,也就是1种都不选,直到选择所有促销品。
如果这里不理解的话,那只能回去问一下高中老师了,嘿嘿嘿!
按照上面求组合数的思路,我们可以这样来表示每一个促销品是否选取,1表示选,0表示不选,所以就可以有下面这个表。
是不是看着还是有点蒙?
这还不如直接手动写啊!其实不然,如果稍微熟悉一点二进制,就知道,这里的11111其实就是二进制的31,而这里我们如果能把0-31的二进制表示出来,再按照1表示选0表示不选的规则将促销品组合起来。
那我们来把0-31用二进制表示出来吧。
这里有个很生僻的函数DEC2BIN,它的作用就是将十进制数转换成二进制,虽然很生僻,但是如果最开始的思路就是这样,完全可以在网上搜索到这个函数。
另外这里用了TEXT是为了将不足5位的补齐0.
然后将这些二进制数逐个拆开。很简单,只需要利用MID函数组合COLUMN就好了。
然后就是按照规则选取。就是在右边再做出对应的辅助列,公式倒是很简单,就是需要注意上一步MID出来的结果是文本型数字,这里在判断的时候也需要对应文本数字。
最后就是将刚才这些选择的组合起来。这里由于需要忽略空单元格,且还需要加上逗号分隔,所以我们用TEXTJOIN函数,这个函数需要新一些的版本才有,OFFICE365或者2019,2016的话要看运气了。
这样就做好了促销品的组合,一共有32种。
当然如果你觉得步骤有点麻烦,也可以一次成型。
这是个数组公式,理解起来难度就大了很多,其实就是将上面的步骤组合成一个了,有兴趣的可以去尝试一下。
这是个企业级的实战案例,有以下几个关键点:
1、 利用二进制的1和0来表示选与不选;
2、 利用DEC2BIN函数将32种结果转换为对应的二进制数,虽然这个函数几乎没人用过,但是我们需要相信这种进制转换Excel是有现成的,所以搜索一下就知道这个函数;
3、 最后用TEXTJOIN函数组合产品,这个函数比较新,需要经常看一些新功能介绍才能发现,所以时刻保持知识的更新很有必要。
当然,你有想到其他办法来解决么?有更好的办法的话,欢迎交流。
联系客服