Возникли проблемы с пользовательской функцией - PullRequest
0 голосов
/ 08 июля 2019

Я конвертирую некоторые таблицы из Excel в Google Sheets, и я пытаюсь выполнить функцию, которая получает код и применяет эту функцию.Например, у меня есть список кодов в столбце и следующие 5 столбцов с текстами.Я хочу набрать =myFunction("code"), и я хотел бы вернуть значение с этой формулой =vlookup(code;A1:F30;3;0), которая будет возвращать столбец 3 со строкой кода.

Я пробовал это:

function myFunc(code) {  
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var cell = sheet.getRange(getCell);
  var test = cell.setFormula('=VLOOKUP('+code+';a1:b10;2;0)')
  return test;
}

он говорит, что у меня нет разрешения на вызов setFunction,

function gettext(code) {
  var func = '=VLOOKUP("'+ code +'";\'VA-Texte\'!A1:I383;\'VA-Texte\'!E1;0)'; 
  return func;
}

он печатает нужный мне код, но не действует как формула.

1 Ответ

0 голосов
/ 09 июля 2019

Ваш код не может быть оценен, потому что мы не знаем значение getCell.

В приведенном ниже коде «поиск» является именованным диапазоном. Диапазон - Ячейка E4, которая содержит значение "ghi", которое является поисковым термином.

function test01(){

 var abc = "lookup";  
  so5693959103(abc);

}
function so5693959103(abc) {  
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheetname = "56939591";
  var sheet = ss.getSheetByName(sheetname);

  // Lookup value is the named range = lookup which is found in E4
  var vlookupformula03 = "=VLOOKUP("+abc+",A1:B10,2,0)";

  //insert formula into cell E8
  var targetRange03 = sheet.getRange("E10");

  targetRange03.setFormula(vlookupformula03);
  Logger.log("DEBUG: result03 = "+targetRange03.getValue());

}

Скриншот Vlookup
Screenshot


Редактировать

Эта ревизия будет работать для значения функции =mylookup("xxx"), где 'xxx' - это значение поиска. В приведенном ниже примере значение поиска равно «ghi»


/*
Imitates the Vlookup function. Receives:
search - The desired value to look for in the column.
Once the cell of the [search] has been found, the returned parameter would be the value of the cell which is 1 cell to the right of the found cell.
*/
function mylookup(search) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheetname = "56939591";
  var sheet = ss.getSheetByName(sheetname);
  var thevalue = search;
  var lastRow=sheet.getLastRow();
  var data=sheet.getRange(1,1,lastRow,2).getValues();

  for(i=0;i<data.length;++i){
    if (data[i][0]==thevalue){
      return data[i][1];
    }
  }
}

Функция Mylookup

mylooup screenshot

...