如果第6列包含“ NA”,则我目前正在使用此代码移动某些行
function MoveNA() {
var s, targetSheet, found;
var s = SpreadsheetApp.getActive();
var allsheets = s.getSheets();
for(var s in allsheets){
var s = allsheets[s];
// Stop iteration execution if the condition is meet.
if(
(s.getName() == "Search") ||
(s.getName() == "xx") ||
(s.getName() == "NA")||
(s.getName() == "Inventory")
) continue;
targetSheet = SpreadsheetApp.getActive()
.getSheetByName("NA"),
found = 0,
s.getDataRange()
.offset(1, 0)
.getValues()
.forEach(function (r, i) {
if (r[5] == 'NA') {
sourceRange = s.getRange((i + 2) - found, 1, 1, s.getLastColumn());
targetSheet.appendRow(sourceRange.getDisplayValues()[0])
s.deleteRow((i + 2) - found);
found += 1;
SetFormulasNA();
}
})
}
}
我不知道如何更新代码以仅移动列B,K,L,M,N,O,P中的数据
我想复制为值,而不是公式
我不想移动的源行中的所有其他数据
请帮忙吗?
答案 0 :(得分:0)
我更新了您的代码,使其包含您要从中复制值的列。请参见dataColumns
数组。这是一个基于 1 的数组,这意味着col B为2,依此类推。这只会将值复制到目标工作表中,而不会从源工作表中删除行。
function MoveNA() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
// destination sheet
var desSheet = ss.getSheetByName('NA');
// sheets to exclude
var excludes = ['Search', 'xx', 'NA', 'Inventory'];
// which cols to copy values from
var dataColumns = [2, 11, 12, 13, 14, 15, 16];
// copy values
sheets.forEach(function(sheet) {
// check sheet is not in excludes
if (excludes.indexOf(sheet.getName()) != -1) return;
var found = 0;
sheet
.getDataRange()
.getValues()
.forEach(function(row, i) {
// check condition
if (row[5] == 'NA') {
row.forEach(function(val, j) {
if (dataColumns.indexOf(j + 1) != -1) return;
row[j] = '';
});
desSheet.appendRow(row);
// delete source row
// sheet.deleteRow(i + 1 - found);
// found += 1;
}
});
});
}