簡體   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