的
今天我们来学习一个相对比较复杂的问题,如何随机抽取一个列表中百分之三十的内容?
如下图中,需要抽取30%的哥哥们去参加投资方组织的活动。

下面就进入操作步骤。
首先我们要将多列数据转换为单列,这是为了方便后面使用公式来解题。
=B2

=B2
+

可以看到C列公式的结果是0,因为A15等于B2数据,那么B15就等于C2,而C15则等于D2,D2单元格又是空值,因此显示为0.
随后拉取填充公式的三列数据,再次向下拖动填充公式,如下图所示:

原理与上上文所述,A28等于B15,B28等于C15,C28则等于D15,即零值。
通过向右和向下的公式填充,便将多列数据快速转换为单列显示。
粘贴为值

之后删除B、C两列,当然不删除也没关系,甚至连上面A列的数据也可以不用复制粘贴为值,但出于习惯,我们会将不需要的数据清除。

到这一步还只是对数据进行整理,下面还要通过不同公式进行数据统计和计算。
=RAND()

rand函数没有参数,它的表达式就是“rand()”,它的结果会返回0-1之间任意的随机值。
随机抽取
我们将rand函数公式向下填充。
:LARGE($B$2:$B$40,ROUND(COUNTA($B$2:$B$40)*30%,)-ROW(A1))

这个公式中包含了large函数、round函数、counta函数和row函数,我们分别来了解一下它们的作用。
=large(区域,k)large({1,2,3},2)
=round(值,位数)round(1.34,1)1.3
COUNTA($B$2:$B$40)
ROUND(COUNTA($B$2:$B$40)*30%,)ROUND第2参数省略,则默认为0,即向最近的整数进行舍入
因为row函数的含义是返回指定单元格的行号,如ROW(A1),它的结果是返回A1单元格的行号,则等于1.
row函数的结果会随着公式向下填充而变动。
但目前得到的结果还只是B列随机值,现在还要前进一步,将随机值对应的A列名称提取出来。
在excel中匹配引用的函数有很多,常用的有index、lookup和vlookup等,那今天作者就介绍一下使用vlookup反向查找匹配。
vlookup函数常规的表达式中,是不能反向匹配的,也就是说查询值要在首列,匹配值要在右侧的数据列中。
=VLOOKUP(LARGE($B$2:$B$40,ROUND(COUNTA($B$2:$B$40)*30%,)-ROW(A1)),IF({1,0},$B$2:$B$40,$A$2:$A$40),2,0)

这个公式看起来比较复杂, 作者在公式编辑栏中进行了换行显示,重点是在于vlookup第2参数的应用。
=vlookup(查找值,查询匹配区域,返回列,样式)
它的第2参数查询匹配区域是一个多列数据区域,查询列在第1列,匹配列在后续列,然后第3参数返回列是指要返回匹配的数据在区域中的列数,最后第4参数样式则是指的精确查找或近似查找,可以用1和0来表示,也可以用true和false表示。
IF({1,0},$B$2:$B$40,$A$2:$A$40)
这是一个if判断表达式,if函数的条件参数有个规则,就是必须可以判断真假,用数值来表示就是1和0,条件为真就是1,条件为假则等于0.
$B$2:$B$40$A$2:$A$40
由于条件是数组的组合形式,那么结果也是一个数组的组合,我们在公式编辑栏中按下F9,可以看下它的结果:

vlookup+if的函数组合,看起来不大好理解,童鞋们可以记住这个固定用法,它不仅可以反向查询匹配,也可以进行多条件查询匹配,是vlookup非常经典的一个用法!
回到之前的公式,我们向下填充,公式计算出11个结果之后,计算结果出现了错误,这正是因为我们只抽取了30%的列表数据,超过30%计算结果就会出错。
最后我们可以再利用逻辑函数iferror来进行容错,也就是当公式计算结果错误,则返回指定值。

我们再看下完整结果,如下图所示:

那么到此,随机抽取列表中百分之三十的数据内容,便操作完了。
其间经历了好几个操作步骤,随后又使用了多个函数公式来执行不同步骤的计算,但万变不离其宗,任何函数的应用,都离不开对它基础含义的理解,童鞋们可以关注下作者,学习作者正在更新的《excel100个常见函数的快速入门》专栏。
以上就是今天的全部内容,我们下期再见!
往期回顾: