繁体   English   中英

Google 表格:复制单元格并在另一个选项卡中对其进行排序

[英]Google Sheets: Copying cells and sorting it in another tab

我有一个来自多个项目的大文档列表(“MDR”),我试图将它们分类为正在进行/完成。 它看起来像这样:

项目 文档 地位
1 Doc11 完毕
1 文件 12 进行中
1 文件 13 完毕
2 Doc21 进行中
2 Doc22 完毕
2 Doc23 进行中

我 select 来自数据验证下拉列表的状态。

我想要第二个选项卡(“GPO”)来过滤第一个 MDR 选项卡以查找正在进行的项目,所以它会是这样的:

项目 文档 地位
1 文件 12 进行中
2 Doc21 进行中
2 Doc23 进行中

另外,如果我对 Doc13 进行了修订,我希望将其添加到他所在位置的第二个选项卡上:

项目 文档 地位
1 文件 12 进行中
1 文件 13 进行中
2 Doc21 进行中
2 Doc23 进行中

我尝试使用查询和过滤器,但它不起作用,因为我还需要在“GPO”选项卡中分配信息,然后在添加/删除行时信息会错位。

还尝试为它制作一个宏,但没有运气,当我更改项目状态时无法将其设置为触发,我也没有找到一种方法在正确的行中对其进行排序。

我无法在 MDR 选项卡中添加过滤器并在那里写入,因为它也用于其他活动。

可以通过宏来完成吗?

或者使用脚本会更容易? 如果是这样,我应该调查什么来找到我的答案?

我很感激任何帮助!

function myfunc101() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName('Sheet1');
  const sh2 = ss.getSheetByName('Sheet2');
  sh2.clearContents();
  const sh3 = ss.getSheetByName('Sheet3');
  sh3.clearContents();
  const [hA,...vs] = sh.getDataRange().getValues();
  let inProg = vs.map(r=>{if(r[2]=='In progress'){return r}}).filter(e=>e);
  let done = vs.map(r=>{if(r[2]=='Done'){return r}}).filter(e=>e);
  inProg.unshift(hA);//add headers
  sh2.getRange(1,1,inProg.length,inProg[0].length).setValues(inProg);
  done.unshift(hA);//add headers
  sh3.getRange(1,1,done.length,done[0].length).setValues(done);
}

表 1:

项目 文档 地位
1 Doc11 完毕
1 文件 12 进行中
1 文件 13 完毕
2 Doc21 进行中
2 Doc22 完毕
2 Doc23 进行中

表 2:

项目 文档 地位
1 文件 12 进行中
2 Doc21 进行中
2 Doc23 进行中

表 3:

项目 文档 地位
1 Doc11 完毕
1 文件 13 完毕
2 Doc22 完毕

听起来您可以使用 pivot 表来实现这一点,因为您想要一个在数据外部的自动刷新过滤表。 如果您不熟悉 pivot 表,请阅读此处: https://support.google.com/docs/answer/1272900?co=GENIE.Platform%3DDesktop&hl=en#:~:text=Pivot%20table。 %22%20choose%20a%20pivot%20table或此处: https://coefficient.io/guide-to-using-pivot-tables-in-google-sheets?ref=quuu

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM