我想知道,如果有已过滤的行,那么如何使用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);
}
setValue
用于已过滤列的显示行(列“ C”)。如果我的理解是正确的,那么这个答案呢?请认为这只是几个可能的答案之一。
isRowHiddenByFilter
。
isRowHiddenByFilter
为时true
,该行正在隐藏。isRowHiddenByFilter
为false
,则显示行。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] 删除。
我来说两句