Function 将自定义函数应用于整个公式(不含arrayformula())

Function 将自定义函数应用于整个公式(不含arrayformula()),function,google-apps-script,google-sheets,Function,Google Apps Script,Google Sheets,我需要帮助将函数应用于整个列。我知道,无论我拖动/高亮显示多远,拖动右下角控制柄都会复制它。但我更希望它适用于整个专栏。我还知道ARRAYFORMULA()函数。但它只能用于基本公式和函数(至少据我所知)。因此,有一些函数(即APPLYALL(range,function))允许我在列中应用公式。还是由我来决定?有没有可能根据ARRAYFORMULA函数定制一个函数,并让它以这种方式工作?感谢所有的帮助 下面是一段代码。参数都是字符串,由E2中的单元格调用。所以对于E2,它看起来像“toStar

我需要帮助将函数应用于整个列。我知道,无论我拖动/高亮显示多远,拖动右下角控制柄都会复制它。但我更希望它适用于整个专栏。我还知道ARRAYFORMULA()函数。但它只能用于基本公式和函数(至少据我所知)。因此,有一些函数(即APPLYALL(range,function))允许我在列中应用公式。还是由我来决定?有没有可能根据ARRAYFORMULA函数定制一个函数,并让它以这种方式工作?感谢所有的帮助

下面是一段代码。参数都是字符串,由E2中的单元格调用。所以对于E2,它看起来像“toStart(C2,D2)”,对于E3,它看起来像“toStart(C3,D3)”等等

function toStart(model,type) {
  if (model == "E340") {return E340Price(type)}     //Calls same function add OR op
  else if (model == "E342") {return E340Price(type)} //""                         ""
  else if (model == "E350") {return E350Price(type)}
  else if (model == "T644") {return T644Price(type)}
  else if (model == "C532") {return C532Price(type)}
}

function E340Price (type){
  if (type == "Toner") {return 89.00;} //Use global constants for prices?
  else if (type == "Photoconductor") {return 65.00;}
  else if (type == "Toner/Photoconductor") {return 144.00;}
}   

您只需复制粘贴公式即可,速度更快,效率更高。 例如:

然后,公式将根据行号自动缩放。我希望你的问题到时候会得到解决


编辑:getLastrow应该是getLastrow(),而setFormula实际上是setFormula(),而不是setFormula=

您只需复制粘贴公式即可,速度更快、效率更高。 例如:

然后,公式将根据行号自动缩放。我希望你的问题到时候会得到解决


编辑:getLastrow应该是getLastrow(),而setFormula实际上是setFormula(),而不是setFormula=

您只需复制粘贴公式即可,速度更快、效率更高。 例如:

然后,公式将根据行号自动缩放。我希望你的问题到时候会得到解决


编辑:getLastrow应该是getLastrow(),而setFormula实际上是setFormula(),而不是setFormula=

您只需复制粘贴公式即可,速度更快、效率更高。 例如:

然后,公式将根据行号自动缩放。我希望你的问题到时候会得到解决


编辑:getLastrow应该是getLastrow(),setFormula实际上是setFormula(),而不是setFormula=

您可以为范围启用函数。诀窍是检查参数是否为数组,然后只需遍历所有单元格。 为了简化,我使用了一个函数myFunctionCanRange(x),它只有一个参数。 实际计算数据的函数是myFunction(x)

代码片段:

function myFunctionCanRange(x) {
  if ( Array.isArray(x)) {
    var result = [];
    for( var i=0; i < x.length, i++) {
      var temp = [];
      for ( var j=0; j < x[i].length, j++) {
        temp.push(myFunction(x[i][j]);
      }
      result.push(temp)
     }
     return result;
    }
  else
    return myFunction(x);
}
函数myFunctionCanRange(x){
if(数组isArray(x)){
var结果=[];
对于(变量i=0;i
现在,您可以通过两种方式调用它:

=myFunctionCanRange(C3)

而且:

=阵列公式(myFunctionCanRange(C3:C))


您可以为范围启用函数。诀窍是检查您的参数是否为数组,然后您只需遍历所有单元格。 为了简化,我使用了一个函数myFunctionCanRange(x),它只有一个参数。 实际计算数据的函数是myFunction(x)

代码片段:

function myFunctionCanRange(x) {
  if ( Array.isArray(x)) {
    var result = [];
    for( var i=0; i < x.length, i++) {
      var temp = [];
      for ( var j=0; j < x[i].length, j++) {
        temp.push(myFunction(x[i][j]);
      }
      result.push(temp)
     }
     return result;
    }
  else
    return myFunction(x);
}
函数myFunctionCanRange(x){
if(数组isArray(x)){
var结果=[];
对于(变量i=0;i
现在,您可以通过两种方式调用它:

=myFunctionCanRange(C3)

而且:

=阵列公式(myFunctionCanRange(C3:C))


您可以为范围启用函数。诀窍是检查您的参数是否为数组,然后您只需遍历所有单元格。 为了简化,我使用了一个函数myFunctionCanRange(x),它只有一个参数。 实际计算数据的函数是myFunction(x)

代码片段:

function myFunctionCanRange(x) {
  if ( Array.isArray(x)) {
    var result = [];
    for( var i=0; i < x.length, i++) {
      var temp = [];
      for ( var j=0; j < x[i].length, j++) {
        temp.push(myFunction(x[i][j]);
      }
      result.push(temp)
     }
     return result;
    }
  else
    return myFunction(x);
}
函数myFunctionCanRange(x){
if(数组isArray(x)){
var结果=[];
对于(变量i=0;i
现在,您可以通过两种方式调用它:

=myFunctionCanRange(C3)

而且:

=阵列公式(myFunctionCanRange(C3:C))


您可以为范围启用函数。诀窍是检查您的参数是否为数组,然后您只需遍历所有单元格。 为了简化,我使用了一个函数myFunctionCanRange(x),它只有一个参数。 实际计算数据的函数是myFunction(x)

代码片段:

function myFunctionCanRange(x) {
  if ( Array.isArray(x)) {
    var result = [];
    for( var i=0; i < x.length, i++) {
      var temp = [];
      for ( var j=0; j < x[i].length, j++) {
        temp.push(myFunction(x[i][j]);
      }
      result.push(temp)
     }
     return result;
    }
  else
    return myFunction(x);
}
函数myFunctionCanRange(x){
if(数组isArray(x)){
var结果=[];
对于(变量i=0;i
现在,您可以通过两种方式调用它:

=myFunctionCanRange(C3)

而且:

=阵列公式(myFunctionCanRange(C3:C))


x.length,i++
应该是
逗号的内部。
temp.push(我的函数(x[i][j])
只是缺少
谢谢你查看代码,玲!你说得很对。很抱歉这么草率。
x.length,i++
应该是
逗号的内部。
temp.push(我的函数(x[i][j])
刚好缺少
谢谢你审阅代码,玲!你说得很对。很抱歉这么草率。
x.length,i++
应该是
逗号里面。
temp.push(myFunction(x[i][j])
刚好缺少
谢谢