首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将活动单元格的值复制到不同的/非活动的工作表-如何确定要使用的目标/目标工作表

将活动单元格的值复制到不同的/非活动的工作表-如何确定要使用的目标/目标工作表
EN

Stack Overflow用户
提问于 2018-08-04 21:05:45
回答 1查看 177关注 0票数 1

此脚本根据活动单元格旁边单元格中的值将活动单元格的值复制到另一个工作表中。

如果我在脚本中编写了确切的单元格,它就能工作,但是每次运行脚本时,它都将基于不同的单元格。

我也需要微调目的地。

下面是:

代码语言:javascript
复制
function copytoTabs() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheetByName('Booking In');
    var data = sheet.getActiveCell();
    var value = ss.getSheetByName('Booking In').getActiveCell().getA1Notation();
    var operator = data.offset(0, 1).getValue();

    if (operator == "Michelle") {
        var ts = SpreadsheetApp.getActiveSpreadsheet();
        var tss = ts.getSheetByName('MICHELLE Schedule');
        ts.setActiveSheet(ts.getSheetByName('MICHELLE Schedule'));
        tss.getRange(1, 2).activate();
        tss.getRange(value).copyTo(tss.getActiveRange(),
        SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
    }
    else if (operator == "Georgia") {
        ss.setActiveSheet(ss.getSheetByName("GEORGIA Schedule"));
        ss.getCurrentCell().offset(0, 1, 4, 1).activate();
        ss.getRange('\'Booking In\'!P12').copyTo(ss.getActiveRange(),
        SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
    }
    else if (operator == "Julie") {
        ss.setActiveSheet(ss.getSheetByName("JULIE Schedule"));
        ss.getCurrentCell().offset(0, 1, 4, 1).activate();
        ss.getRange('\'Booking In\'!P12').copyTo(ss.getActiveRange(),
        SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
    }

    ss.setActiveSheet(ss.getSheetByName('Booking In'), true);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-04 22:04:31

可以将工作表选项卡名与对象中的运算符名称关联起来,而不是使用多个if / the块。然后按运算符名查找工作表选项卡名。

代码语言:javascript
复制
function copytoTabs() {
  var activeCell,objectOfMappedValues,operator,sheet,sourceSs,targetSheetTabName,trgtSh;

  sourceSs = SpreadsheetApp.getActiveSpreadsheet();

  objectOfMappedValues = {//This is an object literal - the word literal means that the values are
    //hard coded here in the function as opposed to being set with code
    "Michelle":"MICHELLE Schedule",
    "Georgia":"GEORGIA Schedule",
    "Julie":"JULIE Schedule"
  }

  activeCell = sourceSs.getActiveCell();
  Logger.log('activeCell: ' + activeCell)

  operator = activeCell.offset(0, 1).getValue();//Get the value of one cell

  targetSheetTabName = objectOfMappedValues[operator];//Get the sheet tab name for this operator
  Logger.log('targetSheetTabName: ' + targetSheetTabName)

  trgtSh = ts.getSheetByName(targetSheetTabName);//Get the sheet tab to be the target to set a value
  Logger.log('trgtSh.getName(): ' + trgtSh.getName())

  trgtSh.getRange(activeCell.getA1Notation()).copyTo(trgtSh.getActiveRange())

}

这段代码可能不是您所要求的所有内容,但希望它能够将您推进到最终解决方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51689555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档