如何在Google表格中将setValue仅用于过滤后的行范围(对于未隐藏的单元格,则使用getRange)?

用户名

我想知道,如果有已过滤的行,那么如何使用setValue,以便仅显示的行(C1 +一行到C的最后一行)获得值。

x(){
  var sheet = SpreadsheetApp.getActiveSheet();
  var lastRow = sheet.getLastRow();
  sheet.getRange(C2, lastRow).setValue('x');
}

更新资料

它起作用,但是非常缓慢。我已经测试了以下代码,它可以快速运行。它必须从显示的第二行开始。以下解决方案在有过滤器和无过滤器的情况下均可使用。第二行(C2)尚未运行。复制的值始终插入在那里。另外,如果可能的话,我想在没有辅助单元的情况下进行复制。是否可以为复制粘贴功能(getValue)复制setValue?

function x() {
  var spreadsheet = SpreadsheetApp.getActive();
  var lastRow = spreadsheet.getLastRow();
  spreadsheet.getRange('C2:'+'C'+lastRow).activate();
  spreadsheet.getRange('C1').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
};

目标是在C列的当前可见(而不是隐藏或不可见过滤的)单元格中放置一个x。为此,我只需要知道如何将第二个可见单元格指定为getRange值(例如,带有偏移量),因为其余的(结束单元格:lastRow)正在工作(正确的选择和输入,只有C2,每次,如果我使用此脚本,则C2斧头中都有):

spreadsheet.getRange('C2:'+'C'+lastRow).activate();

第一行是固定的。如何将第一个不固定的可见行(第二行)用于getRange?如果隐藏了最后一行并使用了脚本,则可能没有设置x,这可能是因为'C'+ lastRow。这有效。仅C2受影响。

这是解决方案

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

function x() {
  var lastRow = s.getLastRow();
  for(var row = 2; s.isRowHiddenByFilter(row); ++row);
  var range = s.getRange('C'+row+':C'+lastRow);
  s.getRange('F1').copyTo(range, SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
}
Tanaike
  • 您要使用将该值setValue用于已过滤列的显示行(列“ C”)。
  • 过滤器是基本过滤器。

如果我的理解是正确的,那么这个答案呢?请认为这只是几个可能的答案之一。

修改要点:

  • 在这种情况下,您可以使用过滤器检索显示和隐藏行的行号isRowHiddenByFilter
    • isRowHiddenByFilter为时true,该行正在隐藏。
    • 如果isRowHiddenByFilterfalse,则显示行。
  • 范围列表是根据检索到的行号创建的,用于setValue

修改后的脚本:

var sheet = SpreadsheetApp.getActiveSheet();
var lastRow = sheet.getLastRow();
var ranges = [];
for (var i = 0; i < lastRow; i++) {
  if (!sheet.isRowHiddenByFilter(i + 1)) {
    ranges.push("C" + (i + 1));
  }
}
sheet.getRangeList(ranges).setValue('x');
  • 运行脚本时,的值将x被放入列“ C”的显示行。
  • 如果if (!sheet.isRowHiddenByFilter(i + 1)) {将修改为if (sheet.isRowHiddenByFilter(i + 1)) {,则将的值x放入隐藏的行中。

参考文献:

如果我误解了您的问题,而这不是您想要的方向,我深表歉意。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章