如何在EXCEL的一列数据中随机提取0-3个数据?

显示效果1 今天来上课3人(小刚、小丽、小强)显示效果2 今天来上课1人(李四) 显示效果3 今天上课0人() 要求:人数随机0-3,括号中的名字随机出现,人数和名字个数一致
B列数据很多,超过1千。

这个问题要添加辅助列,至少随机函数得在单独一个单元格中产生,然后再被引用!因为括号中的人需要根据随机数值来提取,而公式本身无法引用自己!追问

可以使用辅助列,我要最终效果,希望能写明白。

追答

以你上面的表格为例,明了一点操作,共分四步:

    在D1单元格输入下面的公式:

    =RANDBETWEEN(0,3)

    在E2单元格输入下面的公式,并下拉至E11:

    =ROUND(RAND(),4)

    在F2单元格输入下面的公式,并下拉至F11:

    =IF(ROW()-1<$D$1,INDEX($B$2:$B$11,MATCH(LARGE($E$2:$E$11,ROW()-1),$E$2:$E$11,0),1)&"、",IF(ROW()-1=$D$1,INDEX($B$2:$B$11,MATCH(LARGE($E$2:$E$11,ROW()-1),$E$2:$E$11,0),1),""))

    在C1单元格输入下面的公式,就是你要的结果了:

    ="今天来上课"&D1&"人("&CONCATENATE(F2,F3,F4,F5,F6,F7,F8,F9,F10,F11)&")"

    每刷新一次,就能得到不同的结果

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-03-19
有什么用处吗?人名不重复的话,需要辅助列的。追问

我有用,可以有辅助列。我要最终效果。

追答

3个人名已取好,随时数字出现时,按需要显示。随机函数randbetween(1,1000),可以取1到1000之间任意数字。

    行数少时,先取第一个姓名,然后去掉这个姓名,再取,依次取到第3人。

b14=INDEX(B2:B11,RANDBETWEEN(1,10))  

e14=INDEX(B2:B11,INDEX(E2:E10,RANDBETWEEN(1,9)))    

d2=IF(B2=$B$14,"",A2)

e2=IFERROR(SMALL(D:D,ROW(A1)),"")

g2=IF(E2=INDEX($A$2:$A$11,MATCH($E$14,$B$2:$B$11,0)),"",E2)

h2=IFERROR(SMALL(G:G,ROW(D1)),"")

h14=INDEX(B2:B11,INDEX(H2:H9,RANDBETWEEN(1,8)))

k4=RANDBETWEEN(0,3)

l4="今天来上课"&K4&"人("&IF(K4=0,"",IF(K4=1,B14,IF(K4=2,B14&"、"&E14,B14&"、"&E14&"、"&H14)))&")"

2.如果有1100行,因为重名的能性比较小,可以直接用随机函数取人名。可以只用三个公式,如下图:

相似回答