我有一份正在为公司工作的工作簿,在这本书上需要一点帮助。通常,我可以很轻松地解决问题。在我的工作表中,有几个选项卡是我现在正在使用的选项卡,它们是“新建”,“进行中”,“暂停”,“计划中”和“完成”。许可证通过google表单输入添加到“新建”标签中,当列K中的状态发生更改时,我想发生的事情是转到相应的标签。我已经在Excel中进行了所有设置,但是我们不再被允许在工作中使用Excel。 TK's Daily Production任何帮助将不胜感激
答案 0 :(得分:0)
在工作表中,单击“工具”>“脚本编辑器”。 粘贴下面的代码。此代码假定列K具有标题“状态”,并且此列值具有相应的制表符= Spreadsheet中的工作表。例如,如果列K的值为“ NEW”,则必须有一个名为“ NEW”的选项卡。如果您在此列中编辑值,例如从“ NEW”到“ Complete”,则该行将被复制到“ Complete”标签,并且如果激活了相应的代码,则可以选择从“ NEW”标签中删除。
// onEdit trigger
function onEdit() {
moveToTab();
}
function moveToTab() {
// active SS
var ss = SpreadsheetApp.getActiveSpreadsheet();
// active cell/range
var range = ss.getActiveRange();
// active column
var col = range.getColumn();
Logger.log(col);
// active sheet
var aSheet = ss.getActiveSheet();
// get active column header
var header = aSheet.getRange(1,col,1,1).getValue();
Logger.log(header);
// here i assume, Column K has a header 'status'
// change 'status' string to what you have as Column K header
// if column is not 'status', do nothing
if (header.toLowerCase() !== 'status') return;
// get value
var target = range.getValue();
// trim and check there is a value
if (target.toString().trim() === '') return;
// do nothing if same sheet
if (target.toString().toLowerCase() === aSheet.getName().toLowerCase()) return;
// try {
// try move
// target sheet based on Column K value
var sheets = ss.getSheets();
var tSheet = sheets.filter(function(sheet) {
if (sheet.getName().toLowerCase() == target.toLowerCase()) return true;
else return false;
})[0];
if (!tSheet) return;
// active cell row
var row = range.getRow();
// get active row values
var values = aSheet.getRange(row, 1, 1, aSheet.getLastColumn()).getValues();
// append values to target row
tSheet.appendRow(values[0]);
// optionally delete row from old sheet
// un-comment if required
aSheet.deleteRow(row);
// } catch(e) {}
}