如何让 Google 表格根据其中一列中的值自动对行进行排序?

德莱文

我正在处理 Google 表格文档(链接在本段末尾),旨​​在跟踪人们借用的配件。我编写了一个公式,可以将条目的状态更新为以下选项:良好、过期、已退回、延迟退回和缺少信息。我的目标是每天重新排列行,将过期项目放在第一位,状态条目第二,缺少信息第三,最后返回项目。通过使用内置的数据过滤器,我能够做到类似的事情。为此,我转到数据-> 创建过滤器-> 单击状态栏右下角的符号-> 排序 ZA。但是,此解决方案是手动的,因为(据我所知)无法使用应用程序脚本运行过滤器功能。此外,它对行进行排序的顺序并不是我所需要的。

function swap(i, target, correctOrd){
  var link = decVar();
  var temp = 0;
  temp = link.mainSheet.getRange(i, 1, 1, link.col).getValues(); 
  var oneRowCopy = link.mainSheet.getRange(i,1,1, link.col);
  var targetRow = link.mainSheet.getRange(target,1,1, link.col);
  oneRowCopy.copyTo(targetRow);
  temp.copyTo(targetRow); 
}

function reArrange(){
  var correctOrd = [].concat.apply([], getStatus());
  var link = decVar(); var temp = 0;
  for(var i = 2, j = 0; i<correctOrd.length+1; i++, j++){
    if(i != correctOrd[j]){
      swap(i, j, correctOrd);
      correctOrd[j] = i;
    }
  }
}

其余代码可以在共享文档的脚本部分找到。

https://docs.google.com/spreadsheets/d/15qaNHuMoVyEJmwR5pL9ruPFDeiNR60cKWLKxnfjaWko/edit?usp=sharing

如果您对如何完成这样的事情或我的代码做错了什么有任何想法,请告诉我。谢谢!

大师

尽管与 Java 脚本数组函数相比,内置电子表格函数可能会很慢,但此自定义构建函数可用于您的测试用例:

function OverdueGoodMissingReturned() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getSheetByName("Main");
  var lr = sh.getLastRow();
  var lc = sh.getLastColumn();
  var irng = sh.getRange(1,9,lr,1).getValues(); //get col I (StatusColumn)
  var irngF = irng.map(flatten); //Flatten the 2D array
  function flatten(e) {return e[0];}
  var lr = irngF.indexOf(''); //Find actualLast Row (This is needed,because you filled all the rows with Data Validations)
  var rng = sh.getRange(2,1,lr-1,lc); //getWholeRange
  rng.sort(9); //Sort by the status Column 9,Default Sort is Good,Missing,Overdue,Returned
  var rv = rng.getValues();
  var irng = sh.getRange(1,9,lr,1).getValues();
  var irngF = irng.map(flatten);
  var O1 = irngF.indexOf('Overdue')+1; // Find first overdue
  var O2 = irngF.lastIndexOf('Overdue')+1; //Find Last overdue
  var mv = sh.getRange(O1+':'+O2); //getRange to move
  sh.moveRows(mv,2); //Move Overdue to Top
  }

注意:如果您不使用数据验证填充空行,则可能会中断很多 getRange 调用。rng.sort也可以缩短为sheet.sort()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何根据Google表格中的背景颜色对行进行排序

如何根据Google表格中的布尔值将行合并为一列?

如何基于Google表格中一列中的多个文本值查找和返回值

如何在Google表格中对行进行排序

仅在为Google Apps脚本/ Google表格中的特定列设置特定值时,才如何自动连续进行排序?

如何计算Google表格中一列单元格中的所有项目?

如何根据其中一列中的值在文本文件中绘制数据

如何根据其中一个列表中的值对4个相关列表进行排序?

如何根据Google表格的第一列替换颜色

如何通过Python根据其中一列中的值过滤数据集

如何自动平均自己单独的单元格中Google表格中的每一列?

如何根据行中的特定值和熊猫中的另一列对行进行分组?

如何根据值自动将 Google 表格中的列值转换为超链接?

Google表格:如何通过另一列中的数字排序获取球员的姓名?

如何根据列的值对Laravel中的行进行排序?

C#:如何根据一列中的最大值按升序对二维数组中的行进行排序?

我将如何根据左侧 2 列中的任何一列中是否有值来向 Google 表格添加复选框?

如何使用Google表格中ArrayFormula生成的值对列进行排序?

如何使用 Google 表格根据列中的文本值对数据进行分类

在Google表格中,如何根据另一个单元格的值进行过滤?

如何在Google表格中对一组4列进行排序

如何根据其他列值对一列中的值进行排序?

每次更新其中一个值时,如何在Excel中自动对表进行排序?

如何基于同一工作表中列的某些值来设置Google表格另一列中的值

如何根据其中一列中的元素总结熊猫数据框的列

Google表格:如何使用公式从满足条件的列中提取所有值到Googlesheet中的另一列?

如何编写一个对行进行分组的 sql 查询,然后对其中一列进行一些计算?

如何使用特定列中的值对行进行分组,然后使用Google Sheets API将其导出到相应的新电子表格

如何根据阈值对每一列中的行进行计数