Excel名单分组太难?两种方法投票/销售/签到/分班数据10秒自动排
在日常工作中,我们经常需要统计员工的投票结果,比如将投“方案一”和“方案二”的人员名单分别整理成表格,领导要求姓名按10人一排排列。这类需求如果用传统方法手动复制粘贴,效率极低。今天教大家两种方法:小白专用“排序法”和高效自动“公式法”,无论你是Excel新手还是进阶用户,都能快速完成任务!
方法1:小白必看!排序法加引用法(3步搞定)
适用场景:数据量不大、无需频繁更新,适合一次性操作。
操作步骤:
步骤一、新建工作表,命名为“投票1的人员”。
选中原数据表,点击顶部菜单栏【数据】→【筛选】。
点击投票结果列,点击下拉菜单,点击升序,所有“投票结果=1”的人员会集中在上方,“投票结果=2”的排在下方。
在原表中筛选出“投票结果=1”的数据(此时已排序集中),选中所有姓名(B列),按Ctrl+C复制。
在“投票1的人员”工作表A1单元格按Ctrl+V粘贴,得到一列纵向名单。
步骤二、在“投票1的人员”表内在B1单元格输入“A1”,并点击右下角“+”向右拖拽。变为如下表格。
A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 | A9 | A10 |
在B2单元格输入"A11”,并点击右下角“+”向右拖拽。
A11 | A12 | A13 | A14 | A15 | A16 | A17 | A18 | A19 | A20 |
选中刚才输入的两行后,并点击右下角“+”向下拖拽,使数据变至A100(因投票1的人员为96人,根据实际情况调整);
选中A1至A100的数据,按替换(快捷键Ctrl+H),将“A”替换为“=A”
步骤三、选中B2至K10数据,复制并粘贴为数值后,删除原始纵向列(A列),以及空数据完成排版。
优点:无需复杂公式,操作简单!
缺点:数据变动后需重新操作,不适合动态更新。
方法2:高手必备!公式法(自动更新)
适用场景:数据频繁变动、需长期维护,适合追求效率的用户。
操作步骤:
提取投票结果=1的姓名,在“投票1的人员”工作表A1输入公式:
=IFERROR(INDEX(投票详情!$B$2:$B$170, SMALL(IF(投票详情!$D$2:$D$170=1, ROW($B$2:$B$170)-1), ROW(A1))), "")
输入公式后,按 Ctrl+Shift+Enter,公式两侧会自动添加 {}
公式解析:
- IF(投票详情!$D$2:$D$170=1, ROW($B$2:$B$170)-1)
作用:筛选出所有投票结果为 1 的行号。
详细拆解:投票详情!$D$2:$D$170=1:检查D列每个单元格是否为 1,返回 TRUE 或 FALSE 数组。ROW($B$2:$B$170)-1:计算B列从第2行开始的行号,并减1(因为INDEX引用的范围是 B2:B170,索引从1开始)。例如:B2 的行号是2,ROW(B2)-1=1;B3 的行号是3,ROW(B3)-1=2,依此类推。
输出结果:生成一个数组,包含所有满足条件 D=1 的行号索引(如 {1, 3, 5, ...}),不满足条件的返回 FALSE。
- SMALL(数组, ROW(A1))
作用:从小到大提取有效行号。
详细拆解:ROW(A1):当公式向下填充时,ROW(A1) 会变为 ROW(A2)、ROW(A3),即动态递增 k 值(k=1,2,3,...)。SMALL(数组, k):跳过 FALSE 值,返回数组中第 k 小的有效行号。例如:若数组为 {1, FALSE, 3, FALSE, 5},则 SMALL(数组, 1)=1,SMALL(数组, 2)=3,SMALL(数组, 3)=5。
输出结果:依次返回符合条件的行号索引。
- INDEX(投票详情!$B$2:$B$170, 行号)
作用:根据行号索引,从B列提取对应的姓名。
例如:行号为 1 → 提取 B2,行号为 3 → 提取 B4。
- IFERROR(..., "")
作用:当所有行号提取完毕时,SMALL 会返回 #NUM! 错误,用 IFERROR 将其显示为空白。
横向排列为10人一排
在C1单元格输入公式:
=IFERROR(INDEX($A:$A, (ROW()-1)*10 + COLUMN()-2), "")
向右拖动填充到L1,形成第一排10人;
选中C1:L1区域,向下拖动填充,自动生成后续每排姓名。
1.(ROW()-1)*10
作用:每向下移动一行,索引值增加10。
例如:在 C1(第1行),索引为 (1-1)*10 = 0。在 C2(第2行),索引为 (2-1)*10 = 10。
2.COLUMN()-2
作用:每向右移动一列,索引值增加1。
例如:在 C1(第3列),索引为 3-2=1。在 D1(第4列),索引为 4-2=2。
3.(ROW()-1)*10 + COLUMN()-2
总索引计算:
C1 → 0 + 1 = 1(提取A1单元格的值)。
D1 → 0 + 2 = 2(提取A2单元格的值)。
C2 → 10 + 1 = 11(提取A11单元格的值)。
4.INDEX($A:$A, 总索引)
作用:根据总索引从A列提取姓名。
5.IFERROR(..., "")
作用:当索引超出数据范围时显示空白。
一键转换为静态值(可选)
选中所有横向排列的姓名区域 → 复制 → 右键【粘贴为值】,避免公式卡顿。
优点:数据自动同步,一劳永逸!
缺点:需掌握基础公式逻辑。
两种方法对比
如果是一次性整理、简单操作 排序法
如果是数据动态更新、长期使用 公式法
结语
无论你是Excel小白还是办公达人,掌握这两种方法都能大幅提升效率!如果觉得有用,欢迎关注并转发给更多需要的人。你在工作中还遇到过哪些Excel难题?评论区留言,下期为你解答!
模板下载:私信回复“名单分组”,免费获取同款Excel文件!