excel表格区域内填充不重复的随机整数
发布时间:2022-04-03 21:59:58
本文分享一个基于公式生成n×n随机整数的解决方案,并且每个整数都是唯一的。例如,下图1显示了生成10行10列的不重复随机整数。
图1
解决方案
在单元格A1中输入数组公式:
=SMALL(IF(FREQUENCY(($A2:$J$11,B1:$K1),ROW(INDIRECT(“1:99”))-1)=0,ROW(INDIRECT(“1:100”))-1),RANDBETWEEN(1,100-COUNTA($A2:$J$11,B1:$K1)))
向右向下拖拉至单元格J10。
通常,将此矩阵放置在工作表中的某位置,对于输出结果的最左上角单元格的公式,引用的两个单元格区域包括:
1)10×10的单元格区域从最左上角的单元格正下方的单元格开始,向下并向右延伸。
2)最左上角单元格右侧的1×10单行单元格数组
这里都是相对/绝对混合引用。
工作原理
考虑使用FREQUENCY函数,不仅可以生成通常使用COUNTIF函数能够获得的结果,而且还可以操作由多个单元格区域组成的引用。
让我们从示例中随便选择一个公式,看看其是如何工作的。例如,在单元格C8中的公式:
=SMALL(IF(FREQUENCY(($A9:$J$11,D8:$K8),ROW(INDIRECT(“1:99”))-1)=0,ROW(INDIRECT(“1:100”))-1),RANDBETWEEN(1,100-COUNTA($A9:$J$11,D8:$K8)))
可以看到,公式引用的两个单元格区域是:D8:$K8和$A9:$J$11,如下图2所示。
图2
公式中的:
FREQUENCY(($A9:$J$11,D8:$K8),ROW(INDIRECT(“1:99”))-1)
是这种情况下COUNTIF函数有用的替代,它可以用于返回一个由单元格区域内某些值个数组成的数组,而且执行这些计数的单元格区域不是单个连续的区域,而是两个这样的区域。这里需要注意的是FREQUENCY函数的一个特点,即返回的数组比传递给它的元素数量多。因此,上面的结构解析为:
{0;1;0;0;0;1;0;0;0;1;0;1;0;0;0;0;0;0;1;0;1;0;1;1;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;0;0;0;0;1;1;0;0;0;1;0;0;0;1;0;0;0;0;0;0;0;0;1;0;1;0;0;1;1;1;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;0;1;1;1;0;0;0;1;0;1;0;0;1;0}
显然,我们对该数组中的零感兴趣,因此在IF函数中将以上内容设置等于为零,其中IF函函数的参数value_if_true的值是一个从0到99的整数数组,因此:
IF(FREQUENCY(($A9:$J$11,D8:$K8),ROW(INDIRECT(“1:99”))-1)=0,ROW(INDIRECT(“1:100”))-1)
转换为:
IF({0;0;0;0;0;1;0;1;0;0;0;1;0;1;0;0;0;0;0;0;1;0;1;1;0;0;1;0;0;0;0;0;0;0;0;0;1;1;1;1;0;0;0;0;1;1;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;1;0;0;1;0;0;0;0;0;1;1;0;0;0;0;0;1;0;0;0;0;0;0;0;0;1;0;1;1;0;0;0;1;1;1;0;0;1}=0,ROW(INDIRECT(“1:100”))-1)
转换为:
IF({0;0;0;0;0;1;0;1;0;0;0;1;0;1;0;0;0;0;0;0;1;0;1;1;0;0;1;0;0;0;0;0;0;0;0;0;1;1;1;1;0;0;0;0;1;1;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;1;0;0;1;0;0;0;0;0;1;1;0;0;0;0;0;1;0;0;0;0;0;0;0;0;1;0;1;1;0;0;0;1;1;1;0;0;1}=0,{0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46;47;48;49;50;51;52;53;54;55;56;57;58;59;60;61;62;63;64;65;66;67;68;69;70;71;72;73;74;75;76;77;78;79;80;81;82;83;84;85;86;87;88;89;90;91;92;93;94;95;96;97;98;99})
转换为:
IF({TRUE;TRUE;TRUE;TRUE;TRUE;FALSE;TRUE;FALSE;TRUE;TRUE;TRUE;FALSE;TRUE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;TRUE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;FALSE;TRUE;TRUE;TRUE;FALSE;TRUE;TRUE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;TRUE;TRUE;FALSE},{0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46;47;48;49;50;51;52;53;54;55;56;57;58;59;60;61;62;63;64;65;66;67;68;69;70;71;72;73;74;75;76;77;78;79;80;81;82;83;84;85;86;87;88;89;90;91;92;93;94;95;96;97;98;99})
结果为:
{0;1;2;3;4;FALSE;6;FALSE;8;9;10;FALSE;12;FALSE;14;15;16;17;18;19;FALSE;21;FALSE;FALSE;24;25;FALSE;27;28;29;30;31;32;33;34;35;FALSE;FALSE;FALSE;FALSE;40;41;42;43;FALSE;FALSE;46;47;48;49;50;51;52;53;54;55;56;57;FALSE;59;60;61;FALSE;63;64;FALSE;66;67;68;69;70;FALSE;FALSE;73;74;75;76;77;FALSE;79;80;81;82;83;84;85;86;FALSE;88;FALSE;FALSE;91;92;93;FALSE;FALSE;FALSE;97;98;FALSE}
现在,成功地创建了一个不在公式单元格下面的行或右边的单元格中的所有值组成的数组,剩下的就是从此数组中随机选择一个数值。
实现这一目标的一种方法是将上述数组传递给SMALL函数,并指定参数k的值为合适的随机数。由于数组中的数字元素数等于100减去所引用的区域的元素数,因此可以将其用于RANDBETWEEN函数的top参数:
100-COUNTA($A9:$J$11,D8:$K8)
使用了COUNTA函数,可用于处理多个单元格区域。因此:
RANDBETWEEN(1,100-COUNTA($A9:$J$11,D8:$K8))
转换为:
RANDBETWEEN(1,100-27)
其中的27等于单元格区域$A9:$J$11中的20个非空元素加上D8:$K8中的7个非空元素。(注意,将A1:J10区域周边的无关单元格有意地留为空白单元格非常重要)
综上,公式转换为:
=SMALL({0;1;2;3;4;FALSE;6;FALSE;8;9;10;FALSE;12;FALSE;14;15;16;17;18;19;FALSE;21;FALSE;FALSE;24;25;FALSE;27;28;29;30;31;32;33;34;35;FALSE;FALSE;FALSE;FALSE;40;41;42;43;FALSE;FALSE;46;47;48;49;50;51;52;53;54;55;56;57;FALSE;59;60;61;FALSE;63;64;FALSE;66;67;68;69;70;FALSE;FALSE;73;74;75;76;77;FALSE;79;80;81;82;83;84;85;86;FALSE;88;FALSE;FALSE;91;92;93;FALSE;FALSE;FALSE;97;98;FALSE},RANDBETWEEN(1,73))
得到所需的结果。
小结
FREQUENCY函数、COUNTA函数可以操作多个单元格区域。


猜你喜欢
- 在没有触摸板的win10电脑中,鼠标可以说是用户操作系统的重要设备,最近有用户在操作win10系统的时候,自己的鼠标光标却是一直在乱跳的问题
- 咱们在 操纵WPS表格与Excel表格 停止 一样平常办公时, 常常 需求 建造 林林总总的表格,在 建造表格的 时分,为了 进步 事情 服
- 当查询的值属于给定的一个集合时,可以使用IN语句,不在给定的集合时,可以使用NOT IN语句。如果要查询客户所在城市在南京、杭州的信息,可以
- 有用户发现自己每次打开浏览器,主页都会被篡改,发生这种情况可能由多种原因导致,常见的篡改原因有:浏览器桌面快捷方式属性被修改、恶意软件推广锁
- 任务管理器是消费者每天使用的应用程序之一,它为我们提供了系统的基本信息,包括CPU,GPU,磁盘以及网络使用情况。Windows 10内置的
- 大家好!最近不少学生朋友在忙着写论文。在您忙的同时,顺便也看看我们的“易宝典”,没准对您做论文有点帮助。近期会有些易宝典文章发布,做成一系列
- 有时候经常会开着电脑挂机下载大文件,所以我们经常会使用定时关机功能,避免电脑长时间工作,那么电脑如何设置定时关机呢?下面就给大家介绍Win7
- 您能否在下图中找到有关7月数据的重要见解?这个数字来自实际的Excel报告,该报告提供给一家年收入约10亿美元的公司的CEO。为了保护机密性
- 想必MLC/TLC/QLC闪存颗粒的概念已经不用科普,简言之,其存储密度依次提高、但价格和寿命却依次下降。随着三星860QVO、Intel
- 如果你打算如何将MKV格式转换为MOV格式,考虑完成它。这篇文章主要集中在MKV MOV 转换。为了帮助你完成这项工作得更好,这
- Ubuntu怎么更换桌面图标?Ubuntu桌面图标不是很满意,想要更换默认的桌面图标,该怎么更换呢?下面我们就来看看Ubuntu更换桌面图标
- win7旗舰版更新卡在35%开不了机怎么办?最近有用户反映自己在更新系统的时候遇到了更新卡在35%开不了机的问题,这个很有可能是因为我们电脑
- 现在许多人的工作都是依靠电脑来完成的,不过长时间在电脑前工作,会使我们的视力下降。那么有什么办法可以保护好我们的视力呢?当然是调整显示器的颜
- 在word中进行行距设置时,行距类型第一项就是『单倍行距』,那么,这个『单倍行距』指的是什么,具体是什么意思呢?今天,小编就给大家说道说道。
- 在使用电脑遇到硬件设备连接错误等问题时,在系统中卸载设备再重新安装,不失为一个解决问题的好办法。就有Win10用户的扬声器不能用,那么Win
- win10系统附件中的windows传真和扫描卸载删除?win10中预装了很多软件,但是有很多自己都用不到,该怎么删除呢?下面分享win10
- 蓝星漫APP怎么送礼? 蓝星漫APP是中国首个基于占星学提供心理大健康服务的互联网平台,是个基于占星学+知识系的应用软件,很多用户不知道如何
- 挖掘word表格中隐藏的快速编号功能.最近一直在忙着单位人数的统计工作,单位领导下了命令:必须使用word制作表格来完成。我这两天加班加点好
- 在编辑完文档后,会经常发现,有些内容要删除,但是向名列的内容,每次删除都要一个一个删,太浪费时间了,用WPS就可以轻松把那些名列数字,一下子
- 如何用聊天宝发熟人圈?聊天宝是一款社交软件,用户可以使用其和好友进行交流互动。想要在聊天宝中发布熟人圈,具体该怎么操作?下面就是聊天宝发熟人