【问题标题】:VBA conversion to Google scriptVBA 转换为 Google 脚本
【发布时间】:2012-09-21 08:34:07
【问题描述】:
如何引用 Google 脚本中的特定单元格进行循环,并将值返回到特定单元格,如下面的 VBA 示例所示。
这将如何用 Google 脚本编写?
For j = 1 To 20 Step 2
For i = 1 To 20
g = Worksheets("Notes").Cells(i + 15, j + 2).Value
h = Worksheets("Notes").Cells(4, j + 2).Value
l = Worksheets("Notes").Cells(5, j + 2).Value
If Worksheets("Notes").Cells(i + 15, j + 2).Value <> "" Then
等等
【问题讨论】:
标签:
javascript
google-apps-script
spreadsheet
google-sheets
【解决方案1】:
您可以在 javascript 中使用简单的 for 循环来遍历单元格
//get the sheet object
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Notes');
for(j=0; j<=20; j++){
for(i=0; i<=20; i++){
g = sheet.getRange(i + 15, j + 2).getValue();
//...
//...
//and so on
}
}
【解决方案2】:
这是一个例子:
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Notes');
var lastrow=sheet.getLastRow();
var lastcolumn=sheet.getLastColumn();
//In Google Script you should specify the range you want I/O from
var range=sheet.getRange(1,1,lastcolumn,lastrow);
//Return 2D Array for all range Values
var all = range.getValues();
for(var j=0; j<=20; j++){
for(var i=0; i<=20; i++){
//Return each value
var all = range.getCell(i + 15, j + 2).getValue();
}
}
【解决方案3】:
更好的方法是不要每次都调用 getCell,因为您已经获得了数据。
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Notes');
var lastrow=sheet.getLastRow();
var lastcolumn=sheet.getLastColumn();
//In Google Script you should specify the range you want I/O from
var range=sheet.getRange(1,1,lastcolumn,lastrow);
//Return 2D Array for all range Values
var values = range.getValues(); //2D array of row and column values
for(var r=0; r < values.length; r++){
for(var c=0; c < values[r].length; c++) {
//Return each value
var value = value[r][c]; //row, column
}
}