如何在Excel/Google Sheets中为10款产品各随机抽取10条销售样本?
按产品批量随机抽取销售记录的高效方案
当然可以,不管是Google Sheets还是Excel,都有不用手动反复操作的高效方法,能自动为每款产品随机抽取指定数量的样本,以下是具体实现方式:
Google Sheets 操作方法
方法1:自动分组抽样本(推荐)
假设你的销售数据在A:D列,产品名称在B列,直接在空白单元格输入以下公式,就能自动识别所有唯一产品,为每个产品随机选出10条记录:
=ARRAYFORMULA(FLATTEN(QUERY(SPLIT(FLATTEN(IF(SEQUENCE(1,10)<=RANK(RANDARRAY(ROWS(A2:A)), IF(B2:B=UNIQUE(B2:B), RANDARRAY(ROWS(A2:A)), "")), A2:D&"|", "")), "|"), "WHERE Col1 IS NOT NULL")))
公式逻辑:先为每条记录生成随机数,再按产品分组对随机数排名,提取排名前10的记录,最后整理成规整的表格格式。
方法2:分步操作(适合新手理解)
- 新增辅助列(比如
E列),输入=RANDARRAY(ROWS(A:A)),生成对应所有行的随机值 - 用
QUERY函数按产品分组筛选,在空白单元格输入:
排序后,手动按产品分割取前10条,或者结合=QUERY({A:D, E:E}, "SELECT Col1,Col2,Col3,Col4 ORDER BY Col2, Col5", 1)OFFSET批量提取不同产品的样本。
Excel 操作方法
方法1:函数组合实现
- 新增辅助列(比如
E列),输入=RAND(),下拉填充所有数据行 - 用
SORTBY按产品+随机值排序:=SORTBY(A:D, B:B, 1, E:E, 1) - 批量提取每个产品的前10条,在空白单元格输入以下公式并下拉:
横向填充到D列,再下拉10行,就能得到第一个产品的10条样本;继续下拉可获取后续产品的样本。=INDEX(SORTBY(A:D,B:B,1,E:E,1), (ROW(A1)-1)*10+1, COLUMN(A1))
方法2:Power Query 批量处理(大数据量首选)
如果数据量较大,用Power Query更稳定:
- 选中数据区域,点击「数据」选项卡 → 「从表格/区域」(注意勾选「我的表格有标题」)
- 在Power Query编辑器中,点击「转换」→「分组依据」:分组列选产品名称,操作选「所有行」,新列名设为「明细数据」
- 添加自定义列,输入公式:
=Table.Sample([明细数据], 10) - 点击自定义列右侧的展开按钮,选择所有字段展开,最后点击「关闭并上载」,即可得到每个产品的10条随机样本。
内容的提问来源于stack exchange,提问作者Daechir
相关产品推荐
相关产品推荐

