首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建,当左单元格的值为0时,删除单元格和向右的单元格(并向上移动)

创建,当左单元格的值为0时,删除单元格和向右的单元格(并向上移动)
EN

Stack Overflow用户
提问于 2022-09-22 18:17:06
回答 1查看 51关注 0票数 -1

我是一个相对新手使用应用程序脚本,虽然我是一个体面的非宏观自动化谷歌表。我对Javascript并不熟悉,虽然我在大学里上过Python的课。我目前的目标是,如果左单元格的值为0,则如何编写一个宏,该宏将一个单元格和单元格直接删除到右边。(例如。a7是0;a7和b7都应该被删除,下面的单元格被向上移动)。为了把另一个扳手放进去,我有四个不同的列对,像这样(a&b,d&e,g&h,j&k),左边的值是需要多少,右边的单元格是哪个项目需要这个数量。我把其他人的代码连在一起(包括库珀,他很好地评论了最初的问题),并添加了一些想法,但我想我遗漏了一些东西,因为我对脚本不熟悉,所以我没有领会它。下面是有问题的代码:

代码语言:javascript
复制
function print() {
 var source = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = source.getSheetByName('Temp');

 sheet.copyTo(source).setName('Gathering')
 activateSheetByName('Gathering') //Activates the created sheet
 clearNotOrdered //deletes any item that wasn't ordered

 Browser.msgBox('Ready to Print!') //just for kicks and giggles
 }

function clearNotOrdered(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var limit = sheet.getLastRow(); //number of rows in the sheet

  var prep = sheet.getRange(7, 1, limit-13).getValues(); //Prep list
  var kitchen = sheet.getRange(7,4,limit-11).getValues(); //Kitchen's list
  var breading = sheet.getRange(7,7,limit-26).getValues(); //Breader's list
  var gatherer = sheet.getRange(7,10).getValues(); //Catering Person's list

for(var i = 7;i <= limit;i++){//loop for each value to be inserted in each row of the target sheet

  if(prep==0){
  delAdjacentShiftUp() }

  if(kitchen == 0){
  delAdjacentShiftUp() }

  if(breading==0){
  delAdjacentShiftUp() }

  if(gatherer==0){
  delAdjacentShiftUp() }
}
}

function activateSheetByName(sheetName) {
  var sheet = 
SpreadsheetApp.getActive().getSheetByName(sheetName);
sheet.activate();
}

function delAdjacentShiftUp() {SpreadsheetApp.getActiveSheet().getActiveCell().offset(0,0,1,2).deleteCells(SpreadsheetApp.Dimension.ROWS);
}

代码目前没有给我任何错误消息,但它也没有删除数据。我是否只需要运行4个单独的"For“命令,而不是试图将它们一起运行?

EN

回答 1

Stack Overflow用户

发布于 2022-09-22 18:58:40

试试这个:

代码语言:javascript
复制
function delAdjacentShiftUp() {
  SpreadsheetApp.getActiveSheet().getActiveCell().offset(0,0,1,2).deleteCells(SpreadsheetApp.Dimension.ROWS);
}

演示:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73819103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档