根据单元格值在图纸之间移动行

时间:2019-03-06 20:05:00

标签: google-sheets

我有一份正在为公司工作的工作簿,在这本书上需要一点帮助。通常,我可以很轻松地解决问题。在我的工作表中,有几个选项卡是我现在正在使用的选项卡,它们是“新建”,“进行中”,“暂停”,“计划中”和“完成”。许可证通过google表单输入添加到“新建”标签中,当列K中的状态发生更改时,我想发生的事情是转到相应的标签。我已经在Excel中进行了所有设置,但是我们不再被允许在工作中使用Excel。 TK's Daily Production任何帮助将不胜感激

1 个答案:

答案 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) {}
}