You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

无需脚本实现含零件任务的表格数据提取与重排(排除空白行)

不用脚本也能实现!这里有两种实用方法

首先明确你的需求:把多列存储零件信息的Tasks表格,转换成每行对应一个零件的Parts Required格式,同时剔除没有零件的任务(比如「Clean Engine」),完全可以用电子表格工具的内置功能搞定,不用写任何脚本。

先把你的原始表格和目标表格整理清楚:

原始Tasks表格

TaskPart 1Quantity 1Part 2Quantity 2
Oil ChangeOil10Oil Filter1
Clean Engine
Impeller ChangeImpeller1

目标Parts Required表格

TaskPartQuantity
Oil ChangeOil10
Oil ChangeOil Filter1
Impeller ChangeImpeller1

方法1:用Power Query(适合批量处理,Excel/Google Sheets通用)

这是最省心的方案,适合数据量较大或者以后需要重复操作的场景:

  1. 选中Tasks表格的所有数据,在Excel里点击「数据」→「从表格/区域」;在Google Sheets里点击「数据」→「数据连接器」→「表格」,导入到Power Query编辑器
  2. 在编辑器中选中Task列,点击「转换」选项卡的「逆透视列」→「逆透视列对」
  3. 在弹出窗口中添加两对列:第一对选Part 1Quantity 1,第二对选Part 2Quantity 2,点击确定
  4. 此时会生成PartQuantity列,点击Part列的筛选按钮,去掉空值选项
  5. 最后点击「关闭并上载」(Excel)或者「加载到表格」(Google Sheets),就能得到和目标格式完全一致的表格

方法2:用公式手动处理(适合小规模数据)

如果数据量不大,用公式下拉填充也能快速完成:
假设你的Tasks表格在名为Tasks的工作表里,数据从A1开始,在新工作表构建目标表格:

  • Task列(A2单元格)=INDEX(Tasks!$A$2:$A$4, INT((ROW(A2)-2)/2)+1)
  • Part列(B2单元格)=IF(ISODD(ROW(A2)-1), INDEX(Tasks!$B$2:$B$4, INT((ROW(A2)-2)/2)+1), INDEX(Tasks!$D$2:$D$4, INT((ROW(A2)-2)/2)+1))
  • Quantity列(C2单元格)=IF(ISODD(ROW(A2)-1), INDEX(Tasks!$C$2:$C$4, INT((ROW(A2)-2)/2)+1), INDEX(Tasks!$E$2:$E$4, INT((ROW(A2)-2)/2)+1))

把三个公式下拉填充到足够多的行,再筛选掉Part列为空的行,就能得到你需要的结果。


内容的提问来源于stack exchange,提问作者kieranhood

火山引擎 最新活动