一旦第 1 行具有特定值,如何将列移动到新的 sheet?
How can I move a column to a new sheet once row 1 has a certain value?
我使用此处发布的代码根据列的值移动行,但我想对其进行编辑以使其执行相反的操作:将列移动到新的 sheet 基于一行的值。
这是我目前所拥有的:
function onEdit(event) {
// source data in sheet named Blocks
// sheet column is moved to named Ordered
// test row with word "Done" is row 1
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Blocks" && r.getRow() == 1 && r.getValue() == "Done") {
var column = r.getColumn();
var numRows = s.getLastRow();
var targetSheet = ss.getSheetByName("Ordered");
var target = targetSheet.getRange(targetSheet.getLastColumn() + 1, 1);
s.getRange(column, 1, 1, numRows).copyTo(target);
s.deleteColumn(column);
}
}
问题是,当我测试它时,它只移动了该列的第一行。我希望它移动整个列,然后从原来的 sheet.
中删除它
谁能告诉我哪里错了?
移动选定的列
function onEdit(e) {
//e.source.toast('Entry');
var sh = e.range.getSheet();
if(sh.getName() == "Blocks" && e.range.rowStart == 1 && e.value == "Done") {
//e.source.toast('Ordered1')
var tsh = e.source.getSheetByName("Ordered");
var target = tsh.getRange(1,tsh.getLastColumn() + 1);
sh.getRange(2, e.range.columnStart, sh.getLastRow() -1).copyTo(target);
sh.deleteColumn(e.range.columnStart);
}
}
我在第一行使用了 Active/Done 数据验证,我只从第二行移动到最后一行,然后删除了包括验证单元格在内的整个列。
我使用此处发布的代码根据列的值移动行,但我想对其进行编辑以使其执行相反的操作:将列移动到新的 sheet 基于一行的值。 这是我目前所拥有的:
function onEdit(event) {
// source data in sheet named Blocks
// sheet column is moved to named Ordered
// test row with word "Done" is row 1
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Blocks" && r.getRow() == 1 && r.getValue() == "Done") {
var column = r.getColumn();
var numRows = s.getLastRow();
var targetSheet = ss.getSheetByName("Ordered");
var target = targetSheet.getRange(targetSheet.getLastColumn() + 1, 1);
s.getRange(column, 1, 1, numRows).copyTo(target);
s.deleteColumn(column);
}
}
问题是,当我测试它时,它只移动了该列的第一行。我希望它移动整个列,然后从原来的 sheet.
中删除它谁能告诉我哪里错了?
移动选定的列
function onEdit(e) {
//e.source.toast('Entry');
var sh = e.range.getSheet();
if(sh.getName() == "Blocks" && e.range.rowStart == 1 && e.value == "Done") {
//e.source.toast('Ordered1')
var tsh = e.source.getSheetByName("Ordered");
var target = tsh.getRange(1,tsh.getLastColumn() + 1);
sh.getRange(2, e.range.columnStart, sh.getLastRow() -1).copyTo(target);
sh.deleteColumn(e.range.columnStart);
}
}
我在第一行使用了 Active/Done 数据验证,我只从第二行移动到最后一行,然后删除了包括验证单元格在内的整个列。