如何在Excel中按3行一组循环提取多列数据生成新列?
Excel循环提取多列数据解决方案
方案1:公式法(中小数据量快速实现)
假设原数据列A为Apples、B为Bananas、C为Grapes,数据从第2行开始(A2:C10),在D2单元格输入以下公式,下拉填充即可:
=INDEX($A:$C, INT((ROW()-2)/3)+1, MOD(INT((ROW()-2)/3),3)+1)
公式适配调整(对应100列+1000行场景)
如果实际有N列(比如100列),每组提取M行(比如1000行),公式修改为:
=INDEX($A:$CV, INT((ROW()-2)/M)+1, MOD(INT((ROW()-2)/M),N)+1)
$A:$CV:替换为你实际的所有数据列范围(100列对应A到CV列)M:替换为每组提取的行数(比如1000)N:替换为总列数(比如100)
方案2:Power Query(大数据量高效处理)
针对100列、每行1000条的场景,Power Query比公式更稳定高效,步骤如下:
- 选中所有数据区域(包含表头),点击「数据」选项卡→「从表格/区域」,勾选「我的表格有标题」进入编辑器。
- 切换到「转换」选项卡,点击「逆透视列」→「逆透视其他列」,此时数据会转为「属性」(原列名)和「值」(对应数据)两列。
- 添加自定义列:点击「添加列」→「自定义列」,输入公式(把3换成实际每组行数,比如1000):
命名该列为「组号」,用于标记每组数据的归属。=Number.RoundDown(([行]-2)/3)+1 - 排序数据:先选中「组号」列,点击「开始」→「升序排序」;再选中「属性」列,按你需要的循环顺序(比如Apples→Bananas→Grapes)自定义排序。
- 清理结果:删除「属性」和「组号」列,只保留「值」列,点击「关闭并上载」,新工作表会生成按要求循环排列的数据。
内容的提问来源于stack exchange,提问作者Francisco Augusto Varela Aguir
相关产品推荐
相关产品推荐

