использовать содержимое ячейки как значение в макросе - PullRequest
0 голосов
/ 02 марта 2020

Я работаю над очень небольшим проектом на листе Google.

На самом деле все просто, и я стараюсь сделать несколько вещей менее сложными для моего друга, но они хуже, чем я.

Я не знаю, можем ли мы что-то сделать на листе Google, но моя цель - использовать информацию в ячейке. В этом коде

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);
};

я хочу поместить строку IN в ячейку B55 и позволить макросу использовать содержимое из ячейки B55 не как текст, а как диапазон.

я не удивлен, что то, что я говорю, легко понять?

1 Ответ

0 голосов
/ 02 марта 2020
  • Вы хотите взять диапазон, описанный как текст 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});

}

Обратите внимание на изменения между код и этот ответ.

  • лист "Kop ie ..." объявлен явно
  • значению ячейки, содержащей имя диапазона, присвоено имя переменной kopieC55
  • kopieC55 используется в методе getRange(kopieC55) на любителях. Отладка, показывающая адрес диапазона (A1Notation), подтверждает, что переменная принята за диапазон.
  • элементы выходного диапазона в «Kop ie ...» используются для определения целевого диапазона.
    • Ячейка C2 дает начальную строку 2 и начальный столбец 3
    • Количество строк и столбцов получается из loyersrange.
    • Вместе они используются для определить диапазон, используя метод getRange(row, column, numRows, numColumns)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...