确定单个列中的最后一行

确定单个列中的最后一行

我在COLS与数据在片材A通过H

我需要确定A包含数据的列中的最后一行(它是所有连续的 - 数据/行中没有间隙)。

其他列中的数据也包含比列更多的数据行A,因此我只需要隔离列A。(和/或只是col内的范围A)。

我可以在电子表格级别使用

=COUNTA(A2:A100)

然而,在我对Google Apps脚本解决方案的所有研究中,我似乎都发现需要执行多个功能,包括几十行代码 - 包括大量的i++内容......我可以通过直接抵消来减少复杂性A1

是否可能有特定于列的方法来修改此方法?

var aLast = ss.getDataRange().getNumRows();

如果需要一个复杂的过程,那就这样吧。但我发现很难想象(甚至更难找到!)一个更简单的解决方案。

有人关心开导我(或弹出我的泡泡)?


犯罪嫌疑人X
浏览 426回答 3
3回答

GCT1015

如何使用JavaScript技巧?var Avals = ss.getRange("A1:A").getValues();var Alast = Avals.filter(String).length;我从这个答案中借鉴了这个想法。该Array.filter()方法在Avals数组上运行,该数组包含A列中的所有单元格。通过对本机函数的构造函数进行过滤,我们只返回非null元素。这仅适用于单个列; 如果范围包含多个列,则结果filter()将包括来自所有列的单元格,因此位于范围的填充维度之外。

RISEBY

虽然没有直接的公式,我可以想到,它不需要几十行代码来找出A列的最后一行。试试这个简单的函数。以正常方式使用其他功能在单元格中使用它=CountColA()function CountColA(){   var sheet = SpreadsheetApp.getActiveSheet();   var data = sheet.getDataRange().getValues();   for(var i = data.length-1 ; i >=0 ; i--){     if (data[i][0] != null && data[i][0] != ''){       return i+1 ;     }   }}

繁星coding

这将基于A列获得表格中的最后一行。function&nbsp;getLastDataRow(sheet)&nbsp;{ &nbsp;&nbsp;var&nbsp;lastRow&nbsp;=&nbsp;sheet.getLastRow(); &nbsp;&nbsp;var&nbsp;range&nbsp;=&nbsp;sheet.getRange("A"&nbsp;+&nbsp;lastRow); &nbsp;&nbsp;if&nbsp;(range.getValue()&nbsp;!==&nbsp;"")&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;lastRow; &nbsp;&nbsp;}&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;range.getNextDataCell(SpreadsheetApp.Direction.UP).getRow(); &nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}这修复了@mrityunjay-pandey部分正确答案。要扩展此答案以获取最后一行和列,我们可以使用:function&nbsp;columnToLetter(column)&nbsp;{ &nbsp;&nbsp;var&nbsp;temp,&nbsp;letter&nbsp;=&nbsp;''; &nbsp;&nbsp;while&nbsp;(column&nbsp;>&nbsp;0)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;(column&nbsp;-&nbsp;1)&nbsp;%&nbsp;26; &nbsp;&nbsp;&nbsp;&nbsp;letter&nbsp;=&nbsp;String.fromCharCode(temp&nbsp;+&nbsp;65)&nbsp;+&nbsp;letter; &nbsp;&nbsp;&nbsp;&nbsp;column&nbsp;=&nbsp;(column&nbsp;-&nbsp;temp&nbsp;-&nbsp;1)&nbsp;/&nbsp;26; &nbsp;&nbsp;} &nbsp;&nbsp;return&nbsp;letter;}function&nbsp;letterToColumn(letter)&nbsp;{ &nbsp;&nbsp;var&nbsp;column&nbsp;=&nbsp;0,&nbsp;length&nbsp;=&nbsp;letter.length; &nbsp;&nbsp;for&nbsp;(var&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;length;&nbsp;i++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;column&nbsp;+=&nbsp;(letter.charCodeAt(i)&nbsp;-&nbsp;64)&nbsp;*&nbsp;Math.pow(26,&nbsp;length&nbsp;-&nbsp;i&nbsp;-&nbsp;1); &nbsp;&nbsp;} &nbsp;&nbsp;return&nbsp;column;}function&nbsp;getLastDataColumn(sheet)&nbsp;{ &nbsp;&nbsp;var&nbsp;lastCol&nbsp;=&nbsp;sheet.getLastColumn(); &nbsp;&nbsp;var&nbsp;range&nbsp;=&nbsp;sheet.getRange(columnToLetter(lastCol)&nbsp;+&nbsp;"1"); &nbsp;&nbsp;if&nbsp;(range.getValue()&nbsp;!==&nbsp;"")&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;lastCol; &nbsp;&nbsp;}&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;range.getNextDataCell(SpreadsheetApp.Direction.PREVIOUS).getColumn(); &nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}function&nbsp;getLastDataRow(sheet)&nbsp;{ &nbsp;&nbsp;var&nbsp;lastRow&nbsp;=&nbsp;sheet.getLastRow(); &nbsp;&nbsp;var&nbsp;range&nbsp;=&nbsp;sheet.getRange("A"&nbsp;+&nbsp;lastRow); &nbsp;&nbsp;if&nbsp;(range.getValue()&nbsp;!==&nbsp;"")&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;lastRow; &nbsp;&nbsp;}&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;range.getNextDataCell(SpreadsheetApp.Direction.UP).getRow(); &nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}function&nbsp;run()&nbsp;{ &nbsp;&nbsp;var&nbsp;sheet&nbsp;=&nbsp;SpreadsheetApp.getActiveSheet(); &nbsp;&nbsp;var&nbsp;[startRow,&nbsp;lastRow]&nbsp;=&nbsp;[2,&nbsp;getLastDataRow(sheet)]; &nbsp;&nbsp;var&nbsp;[startCol,&nbsp;lastCol]&nbsp;=&nbsp;[1,&nbsp;getLastDataColumn(sheet)];}
打开App,查看更多内容
随时随地看视频慕课网APP