首页 / excel

excel随机抽取n个数据不重复 轻松实现随机抽取的方法

2023-09-11 09:34:52excel阅读

在Excel中抽取n个数据不重复,是一件十分常见的事情。

Excel中提供的算法并不能满足我们的需求,仅仅只能实现抽取从0到N的数字中的一个。

为了让我们的抽取更加合理,更快捷实现,尝试使用Excel中内置的VBA函数,这样可以大大提高我们的工作效率。

首先我们来看一下对于Excel随机抽取n个数据不重复的实现的原理:

1. 将数据集(源数据)中的数据的行号(1到源数据的最大行号)保存在一个数组中,这里称为数组A。

2. 通过使用Random函数随机生成n个范围在1到数组A的最大行号之间的数字,这里称为数组B。

3. 将数组B与数组A中的每个数字进行对比,如果数组B中的某一项与数组A中的某一项相同,那么将数组B中的该项数字与数组A中的最大行号交换,并再次重新进行对比直到对比结果为false。

4. 将数组B中的数字(数据行号)作为实际抽取数据的行号,从而获得n个不重复的数据行。

实现一般有两种方法,一种是通过Excel的函数来实现,另一种则是通过VBA实现。

下面接下来我们就用VBA来实现这样的抽取方法。

我们需要在VBA的编辑器中新建一个模块。

把下面的代码复制粘贴到模块中:

Sub Sample

'声明变量

Dim OriginDataRange As Range

Dim ResultDataRange As Range

Dim GetNum As Long

Dim OriginIndex As Long,ResultIndex As Long

Dim length As Long

Dim RandomTemp As Long

Dim i As Long

'获取源数据范围

Set OriginDataRange = Worksheets.Range

'获取最终结果范围

Set ResultDataRange = Worksheets.Range

'获取抽取的数量

GetNum = InputBox

'定义OriginIndex数组

length = OriginDataRange.Rows.Count

ReDim OriginIndex

For i = 1 To length

OriginIndex = i

Next

'定义ResultIndex数组

ReDim ResultIndex

'reandomly select resultIndex

excel随机抽取n个数据不重复 轻松实现随机抽取的方法

For i = 1 To GetNum

'随机生成一个数,比OriginIndex最大值小

RandomTemp = Int Rnd + i)

'将该数加入到ResultIndex中

ResultIndex = OriginIndex

'将OriginIndex最大值与随即生成的数交换

OriginIndex = OriginIndex

Next

'将结果输出到指定的range

For i = 1 To GetNum

ResultDataRange.Cells = originDataRange.Cells, 1)

Next

End Sub

这段代码的具体功能需要对照上述算法进行解释,对于不同的情况可以进行简单的调整,比如要从源数据中抽取500条,只需要把GetNum设置为500即可;如果源数据的行数改变了,则需要把length的值改为源数据的最大行号;如果抽取到的结果要输出到其他的工作表,也可以修改ResultDataRange的赋值部分,赋值为指定的工作表和单元格的范围。

我们就可以来运行这段代码,把源数据的范围和输出结果的范围指定完成后,输入抽取数量n,即可实现Excel随机抽取n个数据不重复的功能,让我们轻松实现抽取数据,提高工作效率。

文章和图片来自投稿,不代表本站立场,如有侵犯您的版权,请邮箱联系我们删除!

猜你喜欢

  • excel

    excel筛选重复项 快速清理数据的方法

    随着现代社会的发展,越来越多的人开始使用电子表格管理数据,而Excel是少数具备强大功能的电子表格之一,可以让用户进行灵活的数据分析,进行复杂的数据编辑和格式处理。尤其是在大量数据处理中,可以让您快速找到想要的数据。本文将介绍Excel中筛选重复项的办法,以方便用

    2023-11-10 4
  • excel表格如何缩小放大页面 页面缩放技巧

    标题:Excel表格的缩放与放大功能在使用Excel进行数据分析和处理时,我们常常需要对表格进行缩放和放大操作以查看更详细或更宽广的数据范围。本文将详细介绍如何在Excel中实现这一操作。一、缩小页面1. 快捷键:按住Ctrl键并滚动鼠标滚轮可以实现快速缩放。2. 工具栏:点击顶部菜单

    2023-12-15 19
  • excel

    excel批量删除图片快捷键 快速移除多余图片的操作

    excel是一种广受青睐的电子表格软件,它可以帮助我们快速完成众多日常工作,特别是汇总数据、统计分析等工作。有时候,我们需要在excel中插入图片,以使文档更加生动有趣。随着excel工作文档的进行,我们可能会发现各种原本用来展示文章的图片变得不必要,此时就需要将多余的图片删除,也可以将多余的图

    2023-10-03 26
  • excel

    excel每次打开都要配置进度怎么办 关掉提示配置进度的方法

    在日常工作中,很多人都会使用 Microsoft Excel 进行数据处理、分析和报表制作等工作。有时候你可能会遇到一个令人烦恼的问题:每次打开 Excel 文件时,都会弹出提示框要求你配置进度。这种情况不仅影响了工作效率,还让人感到困扰。本文将为你介绍如何解决这个问题,摆脱繁琐的进度配置,提

    2023-08-17 77
  • 打开excel正在访问打印机怎么取消

    Excel是一款功能强大的电子表格软件,常用于数据分析、数据处理和报表制作等领域。在使用Excel过程中,可能会遇到需要打印工作表的情况,此时需要通过“文件”菜单中的“打印预览”或“打印”选项进行操作。在某些情况下,我们可能会遇到“Excel正在访问打印机”的提示框,无

    2023-12-08 36
  • excel

    excel根据数值变颜色特定区域 条件格式设置实现数值区域着色

    excel是微软的办公软件之一,平时在工作中经常会用到,很多用户经常使用excel中的“条件格式”的功能,非常有用。excel根据数值变颜色特定区域,条件格式设置可以使实现数值着色的区域呈现出非常活泼的效果,从而能够增强数据的可视化。下面小编教大家如何在ex

    2023-11-26 35
  • excel

    excel内容不多却很大很卡打不开 解决卡顿问题提升文件打开效率

    随着经济的发展和人们生活水平的提高,办公软件越来越受到人们的欢迎。在这些办公软件中,Excel是最令人兴奋的,它能够帮助人们进行财务分析和统计计算等。但是最近,有不少用户反映,Excel文件的体积不大,但是打开非常慢,甚至还卡死,不得不关闭重新打开,这样就极大影响了工作效率。那么,Excel文件内容

    2023-11-21 46
  • excel冻结前三列怎么设置 固定列宽的教程

    Excel是一种非常强大的电子表格软件,它可以帮助用户进行数据处理和分析。在使用Excel时,有时我们需要将某些列固定,以便于查看和操作。本文将详细介绍如何在Excel中冻结前三列。一、打开Excel并创建一个新的工作表我们需要打开Excel并创建一个新的工作表。可以按Ctrl+N键快速创建一

    2023-12-09 12
  • excel

    excel快速输入当前日期的函数 轻松记录今天的日期

    在Excel中记录当前日期是非常重要的,能够帮助您更好地跟踪活动,分析过去操作的结果,并在使用表格进行分析时跟踪进度。特别是在做财务分析时,记录当前日期尤为重要,因为您需要知道本月本季度和本年度的财务状况。它还可以帮助您跟踪重要的日期,以确保是

    2023-11-15 27
  • excel表格提取右侧部分数据怎么操作 right函数应用

    标题:Excel表格提取右侧部分数据的操作指南在Excel中,我们经常需要从一个表格中提取出特定的信息,而这些信息往往位于表格的一侧或两侧。本文将详细介绍如何使用Excel来提取右侧部分的数据。让我们创建一个示例表格。在这个例子中,我们将有一个包含学生姓名和他们对应成绩的表格。1. 打开Exce

    2023-12-15 14