有一种更简单的方法吗?

发布于 2025-02-12 06:30:02 字数 1173 浏览 1 评论 0原文

有什么方法可以循环浏览单元字母,而不是复制粘贴和更改单元格?

也许有一个数组?

我从事教育工作,这些Google表格不断需要改变我的工作,以下是我的工作方式。

  var spreadsheet = SpreadsheetApp.getActive();
  
  spreadsheet.getSheets()[0].getRange("B21").setValue('3');
  spreadsheet.getSheets()[0].getRange('B22').setValue('MT1');
  spreadsheet.getSheets()[0].getRange('C22').setFormula('=C33'); 
  spreadsheet.getSheets()[0].getRange('C21').setValue(' ');
  spreadsheet.getSheets()[0].getRange("E21").setValue('3');
  spreadsheet.getSheets()[0].getRange('E22').setValue('MT1');
  spreadsheet.getSheets()[0].getRange('F22').setFormula('=f33'); 
  spreadsheet.getSheets()[0].getRange('F21').setValue(' ');
  spreadsheet.getSheets()[0].getRange("H21").setValue('3');
  spreadsheet.getSheets()[0].getRange('H22').setValue('MT1');
  spreadsheet.getSheets()[0].getRange('I22').setFormula('=I33'); 
  spreadsheet.getSheets()[0].getRange('I21').setValue(' ');
  spreadsheet.getSheets()[0].getRange("K21").setValue('3');
  spreadsheet.getSheets()[0].getRange('K22').setValue('MT1');
  spreadsheet.getSheets()[0].getRange('L22').setFormula('=L33'); 
  spreadsheet.getSheets()[0].getRange('L21').setValue(' ');

 }

Is there a way I can loop through the cell letters instead of copy pasting and changing the cells?

Perhaps with an array?

I work in education, and these google sheets keep needing to be altered at my work and the following is how I have been doing it.

  var spreadsheet = SpreadsheetApp.getActive();
  
  spreadsheet.getSheets()[0].getRange("B21").setValue('3');
  spreadsheet.getSheets()[0].getRange('B22').setValue('MT1');
  spreadsheet.getSheets()[0].getRange('C22').setFormula('=C33'); 
  spreadsheet.getSheets()[0].getRange('C21').setValue(' ');
  spreadsheet.getSheets()[0].getRange("E21").setValue('3');
  spreadsheet.getSheets()[0].getRange('E22').setValue('MT1');
  spreadsheet.getSheets()[0].getRange('F22').setFormula('=f33'); 
  spreadsheet.getSheets()[0].getRange('F21').setValue(' ');
  spreadsheet.getSheets()[0].getRange("H21").setValue('3');
  spreadsheet.getSheets()[0].getRange('H22').setValue('MT1');
  spreadsheet.getSheets()[0].getRange('I22').setFormula('=I33'); 
  spreadsheet.getSheets()[0].getRange('I21').setValue(' ');
  spreadsheet.getSheets()[0].getRange("K21").setValue('3');
  spreadsheet.getSheets()[0].getRange('K22').setValue('MT1');
  spreadsheet.getSheets()[0].getRange('L22').setFormula('=L33'); 
  spreadsheet.getSheets()[0].getRange('L21').setValue(' ');

 }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

软糖 2025-02-19 06:30:03

这是我编写的脚本,应该为您工作:

function setValues() {
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet =  spreadsheet.getSheets()[0];
  var range = sheet.getRange('B21:L22');
  var rangeArray = range.getValues();

  let ignoreCol = ['D','G','J']; //Ignore columns D, G, J
  
  for(var i in rangeArray) {
    //loop starts by going through rows, focusing on one row at a time.

    for(var j in rangeArray[i]) {
      //within each row, it calls each column.
      var val;

      let ix = Number(i) + Number(range.getRowIndex());
      let jx = Number(j) + Number(range.getColumn());
      let a1Range = sheet.getRange(ix,jx).getA1Notation();
      let colCheck = a1Range.slice(0,1); //Gets the column letter

      if(i == 0 && (j % 3 == 0 || j == 0)) val = '3';
      else if(i == 0) val = ' ';
      if(i == 1 && (j % 3 == 0 || j == 0)) val = `MT1`;
      else if(i == 1) val = `=${colCheck}33`;

      if(!ignoreCol.includes(colCheck)) { //Only moves on if the column is not ignored.
        sheet.getRange(ix,jx).setValue(val);
      }
    }
  }
}

我运行了几次,并且似乎正常工作。

如果您对此有任何问题,请告诉我,还是想解释一些东西。

Here's a script I wrote that should work for you:

function setValues() {
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet =  spreadsheet.getSheets()[0];
  var range = sheet.getRange('B21:L22');
  var rangeArray = range.getValues();

  let ignoreCol = ['D','G','J']; //Ignore columns D, G, J
  
  for(var i in rangeArray) {
    //loop starts by going through rows, focusing on one row at a time.

    for(var j in rangeArray[i]) {
      //within each row, it calls each column.
      var val;

      let ix = Number(i) + Number(range.getRowIndex());
      let jx = Number(j) + Number(range.getColumn());
      let a1Range = sheet.getRange(ix,jx).getA1Notation();
      let colCheck = a1Range.slice(0,1); //Gets the column letter

      if(i == 0 && (j % 3 == 0 || j == 0)) val = '3';
      else if(i == 0) val = ' ';
      if(i == 1 && (j % 3 == 0 || j == 0)) val = `MT1`;
      else if(i == 1) val = `=${colCheck}33`;

      if(!ignoreCol.includes(colCheck)) { //Only moves on if the column is not ignored.
        sheet.getRange(ix,jx).setValue(val);
      }
    }
  }
}

I ran it a few times and it seems to be working properly.

ex

Please let me know if you have any issues with this, or would like something explained.

一向肩并 2025-02-19 06:30:03

尝试

var sh = spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];

sh.getRange("B21:C22").setValues([['3','MT1'],[' ','=C33']])
sh.getRange("E21:F22").setValues([['3','MT1'],[' ','=F33']])
sh.getRange("H21:I22").setValues([['3','MT1'],[' ','=I33']])
sh.getRange("K21:L22").setValues([['3','MT1'],[' ','=L33']])

try

var sh = spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];

sh.getRange("B21:C22").setValues([['3','MT1'],[' ','=C33']])
sh.getRange("E21:F22").setValues([['3','MT1'],[' ','=F33']])
sh.getRange("H21:I22").setValues([['3','MT1'],[' ','=I33']])
sh.getRange("K21:L22").setValues([['3','MT1'],[' ','=L33']])
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文