excel数据透视表如何填充不重复的随机整数
发布时间:2023-01-11 19:03:17
本文分享一个基于公式生成n×n随机整数的解决方案,并且每个整数都是唯一的。例如,下显示了生成10行10列的不重复随机整数。
解决方案
在单元格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,如下所示。
公式中的:
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函数可以操作多个单元格区域。


猜你喜欢
- 微软将于下周推送Windows Server 2016第三个技术预览版,随后WZor在推特上曝光了该版本截图,现在又放出了系统镜像下载微软将
- 赛博朋克2077是最近大家都在玩的角色扮演游戏,游戏的画质炫酷,每天都有海量的任务系统,玩家可以通过任务和购买的方法得到载具,其中有个巨兽车
- 只要一说起抖音,相信大家应该都不陌生,最近抖音里面推出“黑白定格”特效的作品,简而言之这是“影集”模式拍摄的视频,很多用户反应说不知道应该怎
- word文档使用涂鸦笔怎么使用?Word文档拥有强大丰富的个性化功能,比如支持用户使用涂鸦笔进行创作,那么在word中涂鸦笔具体要怎么使用呢
- 使用Word 2010的目录功能,非常轻松地为自己的论文添加所需目录。在Word 2010中,除了通过使用内置的自动目录样式快速生成文档目录
- 最近很多用户们在更新了win10 2004版本系统以后,很多用户们发现屏幕中会出现一些蓝绿的伪影等,非常影响用户们的体验,具体内容请在系统部
- 今天的教程是如何让文字紧密环绕图片。像楼主写教程这样的文字至于图片上下的虽说很正规但是不太好看,视觉效果没有文字环绕图片的效果好。文字环绕图
- 最右APP怎么开直播?我们在最右中不仅可以观看一些搞笑段子、搞笑视频等,还可以开直播拉人气,那么我们要怎么在最右APP中开直播呢,下面就给大
- 对于办公用户来说,打印自然是其日常工作之一,虽然现在网络化办公已经成为潮流,但大部分情况下仍然需要将相关的文档打印出来,其原因自然不用在这里
- 怎样将docx转换成doc格式?我们在使用Office办公软件创建文本的时候,可以保存为docx和doc的文件格式,docx是Word 20
- 今天这节教程就是要解决这个问题的,在我们的Excel中运用公式可以轻松实现,下面就一起来见证吧!①启动Excel2013,粗略制作出下面的表
- 卸载软件经常会遇到提示没有管理员权限的情况,原因是由于电脑当前用户权限不够导致的,需要用管理员权限来解决,下面是操作过程截图,希望对大家有所
- 在wps表格中可以插入各种类型的文件,例如,我们可以在wps表格中插入视频文件,下面就让小编告诉大家在wps表格中如何插入视频文件。在wps
- WIN10软件运行但看不见窗口怎么解决?win10系统经常出现各种问题bug,比如有的用户明明打开软件在运行了,却看不到界面窗口,那遇到这个
- Win10系统怎么避免按shift键转换语言?最近有用户反映这个问题,使用电脑输入法的时候,摁shift键可以切换中英文,但是也会出现误触的
- 蜂鸟众包如何注册?蜂鸟众包是一款非常不错的配送服务软件,在蜂鸟众包中如果我们想要成为配送员,需要在里面进行注册,那么你知道蜂鸟众包该如何注册
- vmware硬盘空间不够怎么办,vmware中如何为虚拟机增加硬盘容量,今天就为大家详细介绍第一种方法:增加新硬盘分区:1.打开vmware
- 当我们在运行一个执行时间稍长的VBA代码时,可以用下面的VBA代码在状态栏中显示一些信息来提示用户:Application.StatusBa
- Adobe illustrator CC Mac版作为全球最著名的矢量图形软件,以其强大的功能和体贴用户的界面,已经占据了全球矢量编辑 软件
- 它们是Apple TV 4K出乎意料的吸引力,那些漂亮的屏幕保护程序,确实让人想要选择自己喜欢的并找出他们的拍摄地点。如何找出Apple T