本次的练习是:使用公式生成位于两个值之间且没有重复值的随机数。如下图1所示,生成在1至10之间且没有重复值的随机数。 图1
先不看答案,自已动手试一试。 公式 在单元格B3中的数组公式: =SMALL(IF(COUNTIF(B$2:B2,ROW($1:$10))<>1,ROW($1:$10)),1+INT(RAND()*(10-ROW()+ROW(B$3)))) 拖至单元格B12。
公式解析 下图2展示了公式中SMALL函数的第一个参数IF(COUNTIF())部分的运算过程。 图2 单元格区域E4:E13中呈现的是ROW($1:$10)的结果,即数字1到10。 COUNTIF函数统计列E中的数字在B3:B7中出现的次数并在F4:F13中放置统计的结果。 然后将列F中的结果与1比较,看是否等于1,在G4:G13中放置比较后的结果。 如果列G中的值是TRUE,表明列E中相应单元格的数值还没有被使用,将其放置到列H中,否则写入FALSE。列H中的结果即为还没有被使用的数字。
作为SMALL函数第二个参数的公式: 1+INT(RAND()*(10-ROW()+ROW(B$3))) 根据公式单元格所在的行,生成一个数字,该数字小于等于还没有被使用过的数字数。例如,如果公式所在的单元格为B9,那么将生成1至4之间的一个整数作为SMALL函数的参数,提取剩下没有被使用的数字中的数。
小结
下期预告: Excel公式练习26:比较两列的值并提取不相同的数据 如下图所示,要提取列C中西区超市有而列A中东区超市没有的水果,如何编写公式呢?
本文属原创文章,转载请注明出处。 欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。 |
|
来自: zhangshoupen > 《我的电工》