ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的测验 > 函数与公式 > 练习11:随机抽取数字

练习11:随机抽取数字

作者:绿色风 分类: 时间:2022-08-18 浏览:151
楼主
rongjun
题目:随机抽取A1:E10区域内的任一数值数据。
要求:1、用函数完成,不用VBA,不用辅助区域,不定义名称;
        2、各数据被抽取的概率相等,重复的数据按一个计算,空值和文本不参与抽取。
        3、数据源数据可变,但区域格式固定,不得更改。

 

随机抽取数字——题目.rar


请用回复可见方式跟帖答题。
2楼
syz105729913
我先献丑了,有点长,当是抛砖了

=INDEX(SMALL(IF(ISNUMBER(IF(MATCH(SMALL(A1:E10,ROW(1:50)),SMALL(A1:E10,ROW(1:50)),)=ROW(1:50),ROW(1:50))),SMALL(A1:E10,ROW(1:50))),ROW(1:50)),RANDBETWEEN(1,COUNT(1/FREQUENCY(A1:E10,A1:E10))))
3楼
棉花糖
我的也很长
我把文本也放进去了。哈哈。算了
[隐藏] [/隐藏]
>>
4楼
syz105729913
谢谢提醒,省了一个INDEX可以连带着省一个ROW了,呵呵
5楼
棉花糖
只能剑走偏锋了=INDIRECT(TEXT(SMALL(IF(FREQUENCY(A1:E10,IF(ISNUMBER(A1:E10),A1:E10,MIN(A1:E10)-1)),INT(ROW(5:55)/5)*100+MOD(ROW(5:55),5)+1),RANDBETWEEN(1,SUM((FREQUENCY(A1:E10,A1:E10)>0)*1))),"r0c00"),)
6楼
biaotiger1
重在参与,继续参与


  1. =INDIRECT(TEXT(SMALL(IF((A1:E10<>"")*(COUNTIF(OFFSET(A1:E10,,,ROW(1:10)),N(OFFSET(A1,ROW(1:10)-1,COLUMN(A:E)-1)))=1)*ISNUMBER(A1:E10),ROW(1:10)*1000+COLUMN(A:E),65536256),RAND()*SUM(N(FREQUENCY(A1:E10,A1:E10)>0))+1),"R0C000"),)



不知道怎么设置回复可见,用笨办法设置了,也不知道是否成功
7楼
biaotiger1
=INDIRECT(TEXT(SMALL(IF((COUNTIF(OFFSET(A1,,,ROW(1:10),COLUMN(A:E)),N(OFFSET(A1,ROW(1:10)-1,COLUMN(A:E)-1)))=1)*(A1:E10<>"")*ISNUMBER(A1:E10),ROW(1:10)*1000+COLUMN(A:E),65536256),RAND()*SUM(N(FREQUENCY(A1:E10,A1:E10)>0))+1),"R0C000"),)


果真有问题哦,同行的相同数字全部屏蔽了 呵呵
现在如何
8楼
棉花糖
=LARGE(IF(ISNUMBER(1/(LARGE(A1:E10,ROW(1:50)-1)-LARGE(A1:E10,ROW(1:50))))+(ROW(1:50)=1),LARGE(A1:E10,ROW(1:50))),RANDBETWEEN(1,COUNT(1/FREQUENCY(A1:E10,A1:E10))))

做点简化,还有更好答案,再发。
9楼
西山晴雪
学习学习高手们的解法
10楼
wjh619993018
来个超长的
=SMALL(IF(MATCH(SMALL(IF(ISNUMBER(A1:E10),A1:E10,MAX(A1:E10)+1),ROW(1:50)),SMALL(IF(ISNUMBER(A1:E10),A1:E10,MAX(A1:E10)+1),ROW(1:50)),)=ROW(1:50),SMALL(IF(ISNUMBER(A1:E10),A1:E10,MAX(A1:E10)+1),ROW(1:50)),MAX(A1:E10)+1),1+INT(RAND()*(SUM((MATCH(SMALL(IF(ISNUMBER(A1:E10),A1:E10,MAX(A1:E10)+1),ROW(1:50)),SMALL(IF(ISNUMBER(A1:E10),A1:E10,MAX(A1:E10)+1),ROW(1:50)),)=ROW(1:50))*1)-1)))
11楼
gql
额....还没想到答案..先先看看咯
12楼
uncledi
学习学习~~~~~
13楼
一剑书生
学习来啦!
14楼
周晗露
重在参与,继续参与
15楼
wenshui2006
學習一下........
16楼
liujiah
学习中
学习学习高手们的解法
17楼
san__mao
观看观看
.......
18楼
dgxsdr
练习11:随机抽取数字.rar

19楼
swallow5121
学习,学习
20楼
amulee
看看,学习了
21楼
donghan
学习学习。
22楼
苍耳子
23楼
xj9696
学习学习高手们的解法
24楼
Google
只有看的份了
25楼
前前后后
学习学习
26楼
sakuraai88
GGGGGGGGGGGGGGG
27楼
pml
谢谢分享,学习了
28楼
hongxiuming
学习学习学习
29楼
wjc2090742
重在参与。学习来了。也试着写了一个,大概离题了吧?

{=LARGE(IF(ISNUMBER($A$1:$E$10),$A$1:$E$10,""),RANDBETWEEN(1,SUM(--ISNUMBER($A$1:$E$10))))} Abc
30楼
wjc2090742
唉,我真是笨,数字个数不一样,出现概率也是不一样的嘛,怪我一点不懂统计。
还是本着重在参与的精神,写一个笨公式,也不知道对错。

{=LARGE(IF(MATCH(LARGE($A$1:$E$10,ROW(INDIRECT("1:"&COUNT($A$1:$E$10)))),LARGE($A$1:$E$10,ROW(INDIRECT("1:"&COUNT($A$1:$E$10)))),0)=ROW(INDIRECT("1:"&COUNT($A$1:$E$10))),LARGE($A$1:$E$10,ROW(INDIRECT("1:"&COUNT($A$1:$E$10)))),""),RANDBETWEEN(1,COUNT(1/FREQUENCY(A1:E10,A1:E10))))}
31楼
yangcy
不会!只能瞧瞧看了!
32楼
cococococo
不会 悄悄答案
33楼
cococococo
怎么看不到阿 怎么看不到阿
34楼
xpm130
很想学习一下.
35楼
卖火柴的帅哥
答案在那?
36楼
mosforyou
不知是否合题意哦!
随机抽取数字——题目.rar
37楼
sam.tan
我不会,请高手指教,谢谢
38楼
sam.tan
我不太明白,有哪位高手可以解释一下吗?谢谢
39楼
杏花雨V翟
回帖学习一下
40楼
悟空师弟
来个超长的数组公式:

  1. =LARGE(IFERROR(IF(MATCH(LARGE(A1:E10,ROW(1:45)),LARGE(A1:E10,ROW(1:45)),)=ROW(1:45),LARGE(A1:E10,ROW(1:45))),),RANDBETWEEN(1,SUM(IF(ISNUMBER(A1:E10),1/COUNTIF(A1:E10,A1:E10&"")))))

41楼
smoile
似乎有点难,看来真是要好好学习学习了
42楼
body1919
学学看 刚来呢
43楼
bbredheaven
俺来学习学习
44楼
sdk2k4
我是来学习的
45楼
zhouxu10086
学习学习
46楼
adwa
学习学习
47楼
金陵白玉床
不会,我想直接看,因为不能用过去的VB代码来做
48楼
gouyuanpei
没头绪,来学学
49楼
linskying
来学习的。完全不懂
50楼
babajuer
请教
51楼
Zaezhong
看题目还是比较新颖的,学习下~~
52楼
zhanghi
来看答案
53楼
涅磐86970
自己写出来600字符...
咋没有标准答案啊- -
54楼
scrisme
没考虑过这方面的应用,进来学习一下
55楼
LoveJinLee
来学习下。
差距很大说
思路呀。
56楼
Deksan
这个题目有难度 留个记号
57楼
yunipu
讨教
58楼
bensonlei
只有看的份了. 学习
59楼
wcymiss
学习一下
60楼
鬼狐
=IF(COUNT(A1:E10)=0,"",SMALL(IF(MATCH(SMALL(A1:E10,ROW(INDIRECT("1:"&COUNT(A1:E10)))),SMALL(A1:E10,ROW(INDIRECT("1:"&COUNT(A1:E10)))),)=ROW(INDIRECT("1:"&COUNT(A1:E10))),SMALL(A1:E10,ROW(INDIRECT("1:"&COUNT(A1:E10))))),INT(RAND()*SUM(N(FREQUENCY(A1:E10,A1:E10)>0)))+1))
回复,纯粹是为了看到更精彩的公式~~
61楼
fengzhaoji
新人求解~~
62楼
fangjianp
新到ET,浏览了几个函数帖子,见到rongjun超级版主这道题,试了试,有难度。花了2天时间,总算有了答案,整理简化,形成我的最终答案,用EXCEK2003解答的。由于EXCEL2003的局限,公式较长:216字符,详见附件,附件除了公式,还解释了公式的思路。若用EXCEL2007及以上版本,解答会更短些,如统计及判断函数,估计公式长度可在200字符左右,但思路一样,没有增加什么新技巧,所以就给了个EXCEL2003解答。现呈上。请rongjun版主审核,请楼上各位e友指正!谢谢!
随机抽取数字——题目_fangjianp.rar
63楼
yuxin78
=SMALL(IF(ISNUMBER(A1:E10),A1:E10,""),INT(RAND()*(SUM(N(ISNUMBER(A1:E10))))+1))
不会用回复可见
64楼
piny
好題 參與
  1. =SMALL(IF(ISNUMBER(0/(MATCH(SMALL(A1:E10,ROW(1:50)),SMALL(A1:E10,ROW(1:50)),)=ROW(1:50))),SMALL(A1:E10,ROW(1:50))),RANDBETWEEN(1,COUNT(0/(MATCH(SMALL(A1:E10,ROW(1:50)),SMALL(A1:E10,ROW(1:50)),)=ROW(1:50)))))
如何設回復可見 ?


呵 匆匆看完全部解答 可再簡為
  1. =SMALL(IF(ISNUMBER(0/(MATCH(SMALL(A1:E10,ROW(1:50)),SMALL(A1:E10,ROW(1:50)),)=ROW(1:50))),SMALL(A1:E10,ROW(1:50))),RANDBETWEEN(1,COUNT(1/FREQUENCY(A1:E10,A1:E10))))


主要是計算區域內不重複數值之個數 先前用COUNT(0/(MATCH(SMALL(A1:E10,ROW(1:50)),SMALL(A1:E10,ROW(1:50)),)=ROW(1:50)))

原來可以用COUNT(1/FREQUENCY(A1:E10,A1:E10))

哈 ^^
65楼
yuxin78
原来还要去除重复值,唉,那公式写出来就太长了
66楼
fangjianp
回rongjun版主:
  如果没有0,公式中FREQUENCY(IF(1-ISTEXT(A1:E10),RANK(A1:E10,A1:E10)),ROW(1:50))肯定会将0筛选掉的,我测试过的,比如有只有字符和非零数字,结果是绝对不会出现0的
67楼
piny


若把A2及D6這兩格刪除,則你的公式皆僅顯示0(測試:2007)
68楼
rongjun
我的测试结果也一样(2010版)
69楼
fangjianp

是的,单元格A1是个陷阱。直接用FREQUENCY()就行了,多此一举!呵呵^^…………
70楼
战地英雄
71楼
sharprain
{=INDIRECT(TEXT(LARGE(IF(A1:E10="",0,ROW(A1:E10)*100+COLUMN(A1:E10)),RANDBETWEEN(1,50-COUNTBLANK(A1:E10))),"R00C00"),0)}
72楼
Violet_Universe
我那天还准备做呢,今天有时间一看,哦晕,原来是2009年的,
73楼
xiangchuwudi
等我试试啊~看看行不
74楼
公路造价
不错,借鉴借鉴好经验!
75楼
时绱ぶ败家钕
想学习学习
76楼
angellbxsc


学习精彩公式
77楼
jzdst
学习学习高手们的解法
78楼
yangkeyuan
重在参与
79楼
w83365040371
  1. =INDIRECT(TEXT(RIGHT(MIN(IF(FREQUENCY(A1:E10,IF(ISERR(-A1:E10),1e15,A1:E10)),RANDBETWEEN(1,99*1^ROW($1:$51))/1%%+INT(ROW($5:$55)/5)/1%+MOD(ROW($1:$51)-1,5)+1)),4),"r#c00"),)
80楼
yc1058
一起进步
81楼
timothyzhu
学习学习
82楼
bluexuemei
学习!
83楼
传递
  1. =INDIRECT(TEXT(LARGE(IF(ISNUMBER(A1:E10),ROW(1:10)/1%+COLUMN(A:E)),RANDBETWEEN(1,COUNT(A:E))),"r#C00"),)
84楼
stormyqq
学习学习
85楼
袜子很臭啊
看看答案~~
86楼
上将
87楼
david180
LLL
88楼
秋天的灵魂㊣
没办法
89楼
exleod
我也有这个问题。一定要看看
90楼
柳絮飘飞2001
gao shou
91楼
hylees
92楼
健康快乐123
都是高手啊,不会
93楼
。_原点
来看看人家的
94楼
tzfcn
有意思!
95楼
txc
96楼
玉丫头
回复看一下答案
97楼
向快乐出发
回复看一下答案
98楼
sylzldd
下载学习了
99楼
芐雨
学习学习
100楼
碧海波涛
学习
101楼
梦幻骑士
来看看答案,写不出来。
102楼
ykqrs
我理解的对吗?应该不会这么简单。。
  1. =LARGE(A1:E10,INT(RAND()*COUNT(A1:E10)+1))
果然错了,原来是这么个重复一次
103楼
scarlettt4826
期待
104楼
kirstenzyl
用的是=INT(RAND()*(MAX(A1:E10)-MIN(A1:E10)+1)+MIN(A1:E10)),貌似是错的
105楼
冷笑
期待
106楼
1194660928
107楼
cocotang02
108楼
日月经天
看看
109楼
懃奋学习
学习一下
110楼
唱一首の曲°
来看看这个题目,学习高手方法。
111楼
helisen
112楼
铅笔人
先学习下!
113楼
RobinJiang

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap