重点内容
适用版本
方法一(RAND + 排序)桌面版通用;方法二(RANDARRAY / SORTBY)需要 Excel 365 或 2021。
方法怎么选
| 方法 | 适合场景 | 备注 |
|---|---|---|
| RAND + 排序 | 任何 Excel 版本,一次性打乱不需要动态更新 | 排序后要「粘贴为值」才能固定结果 |
| RANDARRAY + SORTBY | Excel 365 / 2021,希望公式随时能重新洗牌 | 一条公式搞定,结果动态溢出 |
方法一:RAND 函数 + 排序(所有版本通用)
示例:A 列是一份姓名列表(A1:A8)。
- 在 B1 输入
=RAND(),生成一个 0~1 之间的随机小数 - 选中 B1,拖动填充手柄向下拖到 B8,让每一行都有各自的随机数
- 点击 B 列中任意一个数字
- (降序排列),Excel 会跳出提示是否扩展选取范围,选择扩展(Extend the selection)
结果:姓名列表跟着 B 列的随机数一起被打乱重排。
B 列随机数排序后,姓名列表被打乱重排的效果
📌 随机数(RAND)是易失性函数,每次工作表重新计算都会变化。如果不想顺序一直变,排序完之后要把 B 列复制、再用「选择性粘贴 → 值」贴回原处,把随机数「定住」。
方法二:RANDARRAY + SORTBY 函数(Excel 365 / 2021)
- 用
RANDARRAY(8,1)一次生成 8 行 1 列、0~1 之间的随机小数数组 - 用 SORTBY 函数按这组随机数排序:
=SORTBY(A1:A8,RANDARRAY(8,1)),默认按升序排(顺序已经是随机的,不需要额外指定 order) - 处理更长列表时,用
ROWS(A1:A8)代替写死的 8,公式变成=SORTBY(A1:A8,RANDARRAY(ROWS(A1:A8),1))
SORTBY + RANDARRAY 公式结果自动溢出,打乱后的姓名列表
函数速查
| 函数 | 语法 | 用途 | 例子 |
|---|---|---|---|
| RAND | =RAND() | 生成 0~1 间的随机小数 | =RAND() |
| RANDARRAY | =RANDARRAY(rows, [columns]) | 生成随机小数数组 | =RANDARRAY(8,1) |
| SORTBY | =SORTBY(array, by_array) | 按对应范围的值排序 | =SORTBY(A1:A8, RANDARRAY(8,1)) |
学完你会
常见错误
- 排序后忘记把随机数「粘贴为值」,结果每次打开或编辑工作表,顺序又自动变了一次
- 排序时 Excel 提示「扩展选取范围」却选了「继续目前选取」,导致只有辅助列被打乱、姓名列没有跟着动
- RANDARRAY 写死的行数跟实际数据行数不一致,导致部分行没有随机数、排序结果不完整
Sources
Blog / Website: