首页 > 解决方案 > 在宏中使用单元格的内容,如值

问题描述

我在谷歌表上做一个很小的项目。

事实上这很简单,我试着让我的朋友少做一些事情,但他们比我更糟糕。

我不知道这是否是我们可以在谷歌表格上做的事情,但我的目的是使用单元格中的信息。在这段代码中

function test4v2() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('A2:B51').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Loyers'), true);
  spreadsheet.getRange('A1').activate();
  spreadsheet.getActiveSheet().getFilter().sort(1, true);
  spreadsheet.getRange('B55').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Kopie von Model de Bilan V3.1'), true);
  spreadsheet.getRange('C2').activate();
  spreadsheet.getRange('B55').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
};

我想将响铃放入单元格 B55 并让宏使用单元格 B55 中的内容,而不是像文本,而是像一个范围。

我不知道我说的容易理解吗?

标签: google-apps-scriptgoogle-sheets

解决方案


  • 您想Loyers!AZ2:BA51在单元格中获取描述为文本的范围。
    • 单元格是Sheet:"Kopie..." cell B55
  • 您希望将数据从该范围复制到新范围。
    • 新范围基于起始单元格引用:Sheet:"Kopie..." cell C2.

function so6048464601() {

  // set up the spreadsheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  // declare the kopie sheet
  var kopie = ss.getSheetByName("Kopie von Model de Bilan V3.1");

  // get the value in kopie cell B55
  var kopieC55 = kopie.getRange("B55").getValue();
  //Logger.log("DEBUG: kopieC55 = "+kopieC55); // display the value in cell B55

  // declare the loyers sheet
  var loyers = ss.getSheetByName("Loyers");
  // declare the loyers range based on Kopie cell B55
  var loyersrange = loyers.getRange(kopieC55);
  Logger.log("DEBUG: loyer range described on kopie = "+loyersrange.getA1Notation());

  // get information about the loyer range
  var loyernumRows = loyersrange.getNumRows();
  var loyernumColumns = loyersrange.getNumColumns()
  Logger.log("DEBUG: # of rows: "+loyernumRows+", # of columns: "+loyernumColumns);


  // get the row and colun for beginning of the output range based at kopie Cell C2
  var kopieRange = kopie.getRange("C2");
  var kopieStartRow = kopieRange.getRow();
  var kopieStartColumn = kopieRange.getColumn();
  Logger.log("DEBUG: kopie start row: "+kopieStartRow+", kopieStartColumn"+kopieStartColumn);

  // declare the target range on Kopie
  var kopieTargetRange = kopie.getRange(kopieStartRow, kopieStartColumn, loyernumRows, loyernumColumns);
  Logger.log("DEBUG: kopie TargetRange = "+kopieTargetRange.getA1Notation())

  //copy loyer data to kopie Target Range
  loyersrange.copyTo(kopieTargetRange, {contentsOnly:true});

}

请注意您的代码与此答案之间的更改。

  • 表“Kopie ...”已明确声明
  • 包含范围名称的单元格的值被赋予一个变量名称kopieC55
  • kopieC55用于getRange(kopieC55)loyers 的方法中。显示范围地址(A1Notation)的调试确认变量被用作范围。
  • “Kopie...”上输出范围的元素用于定义目标范围。
    • 单元格 C2 的起始行为 2,起始列为 3
    • 行数和列数从 中获得loyersrange
    • 它们一起用于使用该getRange(row, column, numRows, numColumns)方法定义范围

推荐阅读