MICROSOFT

EP04. “Randomize List 随机打乱列表”

首页 Microsoft 工具 Excel · Data Analysis · Sort · EP04
约 5 分钟· #EP04#Excel#Sort
🔒 登录后可标记已读
  • 抽签排序、随机分组这类需求,光靠人工「随便打乱」很难做到真正公平——数字函数配合排序才是靠谱做法
  • RAND + 排序是所有版本都能用的老办法;Excel 365/2021 还能用 RANDARRAY + SORTBY 一条公式搞定
  • 两种方法算出来的随机数都会因为重新计算而变动,排序后要记得处理,不然顺序会自己变
  • 学完能给任何列表洗牌,还知道怎么把结果「定住」

重点内容


适用版本

方法一(RAND + 排序)桌面版通用;方法二(RANDARRAY / SORTBY)需要 Excel 365 或 2021。


方法怎么选

方法适合场景备注
RAND + 排序任何 Excel 版本,一次性打乱不需要动态更新排序后要「粘贴为值」才能固定结果
RANDARRAY + SORTBYExcel 365 / 2021,希望公式随时能重新洗牌一条公式搞定,结果动态溢出

方法一:RAND 函数 + 排序(所有版本通用)

示例:A 列是一份姓名列表(A1:A8)。

  1. 在 B1 输入 =RAND(),生成一个 0~1 之间的随机小数
  2. 选中 B1,拖动填充手柄向下拖到 B8,让每一行都有各自的随机数
  3. 点击 B 列中任意一个数字
  4. Data → Sort & Filter → 点击 ZA(降序排列),Excel 会跳出提示是否扩展选取范围,选择扩展(Extend the selection)

结果:姓名列表跟着 B 列的随机数一起被打乱重排。

[截图:B 列随机数排序后,姓名列表被打乱重排的效果]

📌 随机数(RAND)是易失性函数,每次工作表重新计算都会变化。如果不想顺序一直变,排序完之后要把 B 列复制、再用「选择性粘贴 → 值」贴回原处,把随机数「定住」。


方法二:RANDARRAY + SORTBY 函数(Excel 365 / 2021)

  1. RANDARRAY(8,1) 一次生成 8 行 1 列、0~1 之间的随机小数数组
  2. 用 SORTBY 函数按这组随机数排序:=SORTBY(A1:A8,RANDARRAY(8,1)),默认按升序排(顺序已经是随机的,不需要额外指定 order)
  3. 处理更长列表时,用 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))

学完你会

  • ✅ 用 RAND + 排序在任何版本 Excel 里打乱列表顺序
  • ✅ 用 RANDARRAY + SORTBY 一条公式动态洗牌(Excel 365 / 2021)
  • ✅ 知道排序后要把随机数「粘贴为值」,避免顺序每次重算都变动

常见错误

  • 排序后忘记把随机数「粘贴为值」,结果每次打开或编辑工作表,顺序又自动变了一次
  • 排序时 Excel 提示「扩展选取范围」却选了「继续目前选取」,导致只有辅助列被打乱、姓名列没有跟着动
  • RANDARRAY 写死的行数跟实际数据行数不一致,导致部分行没有随机数、排序结果不完整

Sources

Blog / Website:

  1. Randomize List