【问题标题】:Delete rows all rows without a date in first cell删除第一个单元格中没有日期的所有行
【发布时间】:2018-10-05 08:44:50
【问题描述】:

我正在尝试从我的不同银行、信用卡供应商等处收集下载的电子表格,并将它们分别插入到 Google 表格文件中各自的标签中。然后,我想自动执行以相同格式(按列)​​排列所有这些语句的工作,将它们导入一个公共选项卡,并按日期对公共选项卡进行排序。结果将是一个选项卡,其中所有语句都混合在一起并按日期排序。

作为其中的一部分,我需要(对于每个单独的选项卡)能够删除所有不包含日期的行(格式日期...实际上是 dd.mm.yyyy 格式,例如右调整 04.10.2018 或任何日期格式)在该行的“A”列单元格中。如果格式搜索很困难,我可以选择一个脚本来删除所有包含任何文本的行(例如,不像 04 示例那样开始)或“A”列中的空单元格。

【问题讨论】:

  • 我做到了 ;-) 我对删除行部分一无所知。但我明白你的意思,并会尝试编写一些代码作为开始。
  • 一个更好的解释是我试图通过记录宏然后更改代码以更详细地适应目的来学习这一点。但是,为了删除行,我找不到菜单驱动的项目来做我想做的事情。现在我有一些简短的功能可以完成我想要的部分功能。当我拥有一切时,我会把它们缝在一起。但我对删除部分一无所知。

标签: google-apps-script google-sheets


【解决方案1】:

试试这样的:

最难的问题是弄清楚什么是约会。如果你用谷歌搜索你最终会遇到堆栈溢出的答案。这是一个简单的脚本,但我没有测试它。所以如果它不起作用,请尝试调试它。

function isADate(d){
  return (Object.prototype.toString.call(d) === '[object Date]');
}

function delNonDatesInFirstCol(){
  var sh=SpreadsheetApp.getActiveSheet()
  var vA=sh.getDataRange().getValues();

  var n=0;
  for(var i=0;i<vA.length;i++){//if you have a 1 header row start with var i=1;
    if(!vA[i][0] || !isADate(vA[i][0])){
      sh.deleteRow(i + 1 - n);
      n+=1;
    }
  }
}

【讨论】:

  • “开箱即用”的效果非常完美。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-24
  • 2018-03-26
  • 1970-01-01
  • 2022-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多