如果行在 Google 表格中被过滤器隐藏或未隐藏,如何获取最后一个可见行?
How to get last visible row, if rows are hidden or not hidden by filter in Google Sheets?
如果行被隐藏,只有 lastRow1 显示错误的值。如何忽略隐藏行?
function x() {
var s = SpreadsheetApp.getActive().getActiveSheet();
var lastRow1 = s.getLastRow();
var lastRow2 = s.getActiveRange().getLastRow();
Browser.msgBox(lastRow1);
Browser.msgBox(lastRow2);
if (lastRow1 == lastRow2) {
// Do something.
}
}
我相信你的目标如下。
当出现以下示例情况时,您希望将 5
检索为 lastRow
。
您想使用 Google Apps 脚本实现此目的。
为此,这个答案怎么样?
修改点:
- 在这种情况下,
lastRow
是通过 isRowHiddenByUser
检索到的。
修改后的脚本:
function x() {
var s = SpreadsheetApp.getActive().getActiveSheet();
var lastRow = 0;
for (var i = s.getLastRow(); i > 0; i--) {
if (!s.isRowHiddenByUser(i)) {
lastRow = i;
break;
}
}
console.log(lastRow); // or Browser.msgBox(lastRow);
}
注:
如果要通过基本过滤器从sheet中获取隐藏行的lastRow
,请修改如下。
来自
if (!s.isRowHiddenByUser(i)) {
到
if (!s.isRowHiddenByFilter(i)) {
参考文献:
如果行被隐藏,只有 lastRow1 显示错误的值。如何忽略隐藏行?
function x() {
var s = SpreadsheetApp.getActive().getActiveSheet();
var lastRow1 = s.getLastRow();
var lastRow2 = s.getActiveRange().getLastRow();
Browser.msgBox(lastRow1);
Browser.msgBox(lastRow2);
if (lastRow1 == lastRow2) {
// Do something.
}
}
我相信你的目标如下。
当出现以下示例情况时,您希望将
5
检索为lastRow
。您想使用 Google Apps 脚本实现此目的。
为此,这个答案怎么样?
修改点:
- 在这种情况下,
lastRow
是通过isRowHiddenByUser
检索到的。
修改后的脚本:
function x() {
var s = SpreadsheetApp.getActive().getActiveSheet();
var lastRow = 0;
for (var i = s.getLastRow(); i > 0; i--) {
if (!s.isRowHiddenByUser(i)) {
lastRow = i;
break;
}
}
console.log(lastRow); // or Browser.msgBox(lastRow);
}
注:
如果要通过基本过滤器从sheet中获取隐藏行的
lastRow
,请修改如下。来自
if (!s.isRowHiddenByUser(i)) {
到
if (!s.isRowHiddenByFilter(i)) {