Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用脚本在Google工作表中获取下一个未过滤的行号(从当前行向下一行)?_Javascript_For Loop_Google Sheets_Spreadsheet_Setvalue - Fatal编程技术网

Javascript 如何使用脚本在Google工作表中获取下一个未过滤的行号(从当前行向下一行)?

Javascript 如何使用脚本在Google工作表中获取下一个未过滤的行号(从当前行向下一行)?,javascript,for-loop,google-sheets,spreadsheet,setvalue,Javascript,For Loop,Google Sheets,Spreadsheet,Setvalue,我想在A1中设置值(下一个未过滤的行号)。使用isRowHiddenByFilter函数时,我在另一个上下文中体验到了长达15秒的时间。希望执行速度会更快 var s = SpreadsheetApp.getActive().getActiveSheet(); function a() { var x = s.getCurrentCell().getRow(); for(y = 1; s.isRowHiddenByFilter(x); ++y); s.getRange('A1').

我想在A1中设置值(下一个未过滤的行号)。使用isRowHiddenByFilter函数时,我在另一个上下文中体验到了长达15秒的时间。希望执行速度会更快

var s = SpreadsheetApp.getActive().getActiveSheet();

function a() {
  var x = s.getCurrentCell().getRow();
  for(y = 1; s.isRowHiddenByFilter(x); ++y);
  s.getRange('A1').setValue(x);
}
下一步我尝试的方法是无效的

var s = SpreadsheetApp.getActive().getActiveSheet();

function a() {
  var lastColumn = s.getActiveRange().getLastColumn();
  var x = s.getActiveRange().offset(1, -lastColumn+1).getValue();
  var y = s.getRange('D1').setValue(x);
}
D1公式

=MATCH(D1, A:A, 0)

在共享的第一个代码段中,您正在检查当前选定的行是否被
for
循环的每次迭代中的过滤器隐藏。您应该在每次迭代中检查不同的行,因此应该使用循环索引

例如,您可以这样做:

函数nextNotFilteredRow(){
var s=SpreadsheetApp.getActive().getActiveSheet();
var startRow=s.getCurrentCell().getRow()+1;

对于(var i=startRow;我必须为我糟糕的英语技能道歉。我无法理解
如何获取下一个未过滤的行号(从当前行向下)在Google Sheets with script?
。因此,首先,我想正确理解您的目标。在您的情况下,基本筛选器用于工作表,例如,在这种情况下,当“Row1”、“Row2”、“Row4”、“Row5”、“Row7”的行显示时,您希望检索第4行。同时,您希望减少脚本的处理时间。我的理解是否正确?例如,如果当前单元格位于第5行,而第6到9行由于已过滤而未显示,则下面的下一个可见行是第10行。当我运行宏且我位于第5行时,我希望第10行为空插入D1(getValue,setValue)。我需要该值以查看它在哪一行继续(索引)。感谢您的回复。我为我糟糕的英语技能深表歉意。我想确认我的理解是否正确。当第1行到第8行具有值以及“Row1”、“Row2”、“Row4”、“Row5”、“Row7”、“Row8”行时如图所示,您希望检索7的数字。并且,您希望将
7
放入单元格“D1”。我的理解是否正确?如果活动单元格位于“第5行”中,并且过滤了“第6行”,但“第7行”不,那么必须在D1中设置7。感谢您的回复。我必须为我糟糕的英语技能道歉。很遗憾,从您的回复中,我仍然无法理解您的目标。我只需要一个值(从活动单元格的行查看下一可见行的行号)。如何更改此值,以便只插入一次这一个值?我注意到这种情况发生了好几次。@user8652270返回的
值丢失。我已修复该问题,现在在找到第一个非隐藏行时,它应该停止执行。请告诉我这是否适用于您。@user8652270我还修复了一个小的键入错误(循环应在
i时完成