跳至主要内容

在 Excel 中随机化列表(简单分步教程)

Author: Amanda Li Last Modified: 2025-05-08

执行随机排序是一种快速简便的方法,可以确保所有情况以相等的概率出现。在本教程中,我们将介绍如何通过几个简单的步骤轻松地在 Excel 中随机化或打乱列表顺序。

A screenshot illustrating the randomization result in Excel

视频:在 Excel 中随机化列表


使用函数随机化列表

在本节中,我将教您如何使用内置的 Excel 函数打乱列表顺序。

使用 RAND 函数随机化列表

任何版本的 Excel 用户都可以借助 RAND 函数和排序功能来随机排序其原始数据集,请按照以下步骤操作。

步骤 1:输入 RAND 公式

选择要随机化的列表顶部单元格旁边的单元格,输入以下 RAND 公式,然后按“Enter”。

=RAND()

RAND formula in a cell

步骤 2:将 RAND 公式填充到其他单元格

双击公式单元格的填充柄(右下角的小绿色方块),将公式应用到下方的单元格。

RAND formula applied to other cells

步骤 3:对 RAND 结果进行排序以打乱列表

1. 选择包含 RAND 公式的列表“B2:B8”。

2. 在“开始”选项卡的“编辑”组中,点击“排序和筛选” > “从小到大排序”。

Sort Smallest to Largest option on the ribbon

3. 在弹出的对话框中,选择“扩展选定区域”,然后点击“排序”。

Selecting the 'Expand the selection' option

结果

现在,一切就绪!列表已随机化,如下所示。

The list is randomized

注意:Excel RAND 函数是易失性函数:每次工作表更改时都会重新计算其结果。因此,在排序后,B 列中的数字会立即发生变化。如果想再次打乱列表,请重复上述 3 步。否则,您可以直接删除包含 RAND 函数的列。
使用 RANDARRAY、SORTBY 和 ROWS 函数随机化列表(适用于 Excel 365/2021)

如果您使用的是较新版本的 Excel,例如 Microsoft 365 的 Excel、Excel 2021 或 Excel 网页版,RANDARRAYSORTBYROWS 公式将帮助您快速在指定位置打乱列表顺序。

步骤 1:输入 RANDARRAY、SORTBY 和 ROWS 公式

选择一个空白单元格作为获取随机化结果的位置,输入以下公式(请注意,您应将公式中的“A2:A8”更改为要随机化的原始列表),然后按“Enter”。

=SORTBY(A2:A8,RANDARRAY(ROWS(A2:A8)))

注意:
  • 当溢出范围(在此例中为 B2:B8)不为空时,Excel 会返回“#SPILL!”错误。
  • 该公式是易失性的:每次工作表更改时都会重新计算其结果。如果想再次打乱列表,请按“F9”。
  • 公式结果(随机化列表)不可编辑。如果需要编辑随机化列表,请继续下一步。

(可选)步骤 2:复制并粘贴公式结果以使其可编辑

如果您只想查看随机结果,可以跳过此步骤。如果想编辑随机打乱的列表,则应复制公式结果并仅粘贴值:

1. 选择公式结果并按“Ctrl” + “C”进行复制。

2. 右键单击要粘贴复制结果的单元格。(也可以将其粘贴回原始位置。)

3. 从右键菜单中选择“仅粘贴值”选项。

结果

现在,您将获得一个被打乱且可编辑的列表,如下所示。


使用 Kutools 在 2 次点击内随机化 Excel 中的列表

如果您厌倦了使用公式,并希望借助插件的帮助,Kutools for Excel随机排序/选择区域功能可以帮助您更轻松地执行随机排序,并提供更多选项。请按照以下步骤操作:

Kutools for Excel 提供了超过 300 种高级功能,简化复杂任务,提升创造力与效率。 通过集成 AI 能力,Kutools 能够精准自动执行任务,让数据管理变得轻松简单。Kutools for Excel 的详细信息...         免费试用...

首先,选择要打乱的列表。然后选择“Kutools” > “区域” > “随机排序/选择区域”。在弹出的“随机排序/选择区域”对话框中,选择“整行”,然后点击“确定”。

Select the Entire rows option in the dialog to shuffle the list

注意:

使用 VBA 随机化列表

如果您希望通过 VBA 方法随机化列表,请按照以下步骤操作。

注意:运行 VBA 宏后无法撤销。因此,请在其他地方备份列表,以防将来需要原始数据。

步骤 1:选择要打乱的列表

The list to be shuffled is selected

步骤 2:将 VBA 代码复制到模块窗口

1. 按“Ctrl” + “F11”打开 VBA 编辑器,然后点击“插入” > “模块”以打开模块代码窗口。

Click Insert > Module in the VBA editor

2. 将以下 VBA 代码复制并粘贴到打开的模块窗口中。

Sub RandomSort()
'Update by ExtendOffice
Dim xRg As Range
Dim xNum, xF, xI As Integer
Dim xWSh, xAWSh As Worksheet
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set xAWSh = Application.ActiveSheet
Set xRg = ActiveWindow.RangeSelection
Set xWSh = Worksheets.Add
xNum = xRg.Count
For xF = xNum To 1 Step -1
    xI = WorksheetFunction.RandBetween(1, xF)
    xWSh.Range("A1").Value = xRg.Item(xI)
    xRg.Item(xI) = xRg.Item(xF)
    xRg.Item(xF) = xWSh.Range("A1")
Next
xWSh.Delete
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

步骤 3:运行 VBA 代码

在代码窗口中,按“F5”或点击 Run button 按钮以运行此代码。

The run button in the code window

结果

The list is shuffled

注意:如果想再次随机化列表,请重复上述 3 步