随机将数字打散分配到指定个数的单元格中,速速收藏!
送人玫瑰,手有余香,请将文章分享给更多朋友
动手操作是熟练掌握EXCEL的最快捷途径!
今天和大家来做一道数学题。
如下图所示,我们要把A列中的数字按照B列中指定的单元格数,随机分配到这些单元格中。例如,要把数字“8”随机分配到3个单元格中。
这的确是一道烧脑的题目。我们一起来看看大神是怎样解决这个问题的!
这个题目总体的思路是:将待拆分的数字转换为最小的数字单位1,例如,将单元格A2中的数字分成8个1;同时,我们可以利用RANDBETWEEN函数求出1到3(单元格B2中的数字)间的随机数;由于这些随机数肯定是在1和3之间,所以我们可以计算出这些随机数分别等于1、2、3的个数;最后利用MMULT函数可以求得随机数分别为1、2、3的总和,也就是随机分配到每个单元格中的数字了。
选中单元格区域D1:M1,输入公式“=IFERROR(INDEX(MMULT(TRANSPOSE(ROW(INDIRECT("1:"&A2)))^0,N(RANDBETWEEN(ROW(INDIRECT("1:"&A2))^0,B2)=TRANSPOSE(ROW(INDIRECT("1:"&B2))))),COLUMN(A:M)),"")”,三键回车并向下拖曳即可。
思路:
TRANSPOSE(ROW(INDIRECT("1:"&A2)))^0部分,将单元格A2中的数字拆分成8个1,再利用TRANSPOSE函数将其转置为1行8列的数组
RANDBETWEEN(ROW(INDIRECT("1:"&A2))^0,B2)部分,计算1到3之间的随机数。其结果是返回了一组8行1列的数组
TRANSPOSE(ROW(INDIRECT("1:"&B2)))部分,返回的是一个1行3列的数组,其结果是{1,2,3}
上述两部分相比较,得到了一个8行3列的数组。由于RANDBETWEEN函数的随机数肯定是在1和3之间,因此上述两部分比较的结果实际上告诉我们了随机数分别等于1、2、3的个数
利用MMULT函数计算出随机数等于1、2、3的总和。这也是被随机分配到相应单元格中的数字
利用INDEX函数为每个单元格返回相对应的数字
利用IFERROR函数屏蔽错误
这道题目的确有些难度,小伙伴们如果有任何疑问,可以私信联系我哦!
-END-
长按下方二维码关注EXCEL应用之家
面对EXCEL操作问题时不再迷茫无助
我就知道你“在看”
注意!前方有红包挡道!速点阅读原文消灭之!