繁体   English   中英

Google表格脚本-获取第一个空白单元格

[英]Google Sheets Script - Get first blank cell

我想找到一个范围内的第一个空白单元格。 该代码有效,但似乎已链接到B列。

 function selectFirstEmptyRow() { var sheet = SpreadsheetApp.getActiveSpreadsheet(); sheet.setActiveSelection(sheet.getRange("D"+getFirstEmptyRow())) } function getFirstEmptyRow() { var sheet = SpreadsheetApp.getActiveSheet(); var range = sheet.getDataRange(); var values = range.getValues(); var row = 26; for (var row=26; row<values.length; row++) { if (!values[row].join("")) break; } return (row+1); } 

当我运行它时,它将选择D中的单元格,但是会根据B查找空白。

假设我们正在10-20行中工作。 B列中有10-12的内容。 我运行它(据我所知应该在D上运行),它将选择D13(因为B10:B12中有东西。即使D中什么都没有,它也应该选择D10。

UPDATE :::

因此,我建议您进行一些更改。

 function selectFirstEmptyRow() { var sheet = SpreadsheetApp.getActiveSpreadsheet(); sheet.setActiveSelection(sheet.getRange("B"+getFirstEmptyRow())) } function getFirstEmptyRow() { var sheet = SpreadsheetApp.getActiveSheet(); var lastRow = sheet.getLastRow(); //getRange(row, column, numRows, numColumns) var range = sheet.getRange(28, 2, lastRow - 28, 1); var values = range.getValues(); var row = 28; for (var i=0; i<values.length; i++) { if (!values[i].join(" ")) break; } return (row+1); } 

它总是选择第29行(我想是因为它从28开始,并且我有return(row + 1)?

这行:

var row = 26;

硬编码的起始编号为26。循环计数从26开始:

for (var row=26; row<values.length; row++) {

如果您希望循环从起始行10循环到最后一行,请将该行更改为:

for (var i=0; i<values.length; i++) {

您的代码实际上两次定义了变量row 一次位于for循环之上,一次位于for循环内部。 row变量根本不应该在循环中使用。 for循环需要它自己的计数器。

在这行代码中:

for (var row=26; row<values.length; row++) {

JavaScript Array join()方法从数组返回一个字符串。

此行代码中的getDataRange()方法:

var range = sheet.getDataRange();

返回工作表中所有行和列的二维数组。 范围从工作表中数据的左上角开始。 如果要排除直到C列(包括C列)的列,请使用其他方法获取不同的范围。

因此,我将更改此行:

var range = sheet.getDataRange();

也许将代码更改为:

var lastRow = sheet.getLastRow();
//getRange(row, column, numRows, numColumns)
var range = sheet.getRange(10, 4, lastRow - 10, 1);

上面的代码将获取一个二维数据数组,从第10行第4列开始,并且比总行数少10行,并且仅从D列(第4列)获取一列数据

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM