Google Spreadsheet Scripting - 获取单个引用单元格的getColumn

时间:2012-12-05 14:58:11

标签: google-apps-script

我想要一个函数,我在其中传递一个引用的单元格,而不是一个范围,并返回该单元格的列号。

function lastRealDate(v) {
  var thisColumn = v.getColumn();
  return thisColumn;
}​

但显然我不能那样做。有人能告诉我正确的方法吗?电子表格脚本的新手。

error: TypeError: Cannot find function getColumn in object 

好的,也许我应该提供更多细节。 我有一个工作列表,每个工作都有以下列..

项目名称|状态|完成日期|天数左 工作#1 |准备好了12/5/12 | 0.14 工作#2 | HOLD | 12/5/12 | 0.25 工作#3 |准备好了12/6/12 | 1.0

完成日期由......

计算

if(Days Left> 0,WORKDAY(上一个项目'完成日期,剩余天数) 字面意思是:= if(J5> 0,WORKDAY(G4,J5,vars!$ A $ 2:$ A $ 27),"")

一切正常。但现在我想查看状态列。如果先前作业的状态处于暂停状态,那么我想跳过那个并暂时检查下一个作业状态。

所以基本上我需要循环遍历单元格,直到找到下一个未处于HOLD状态的作业并抓住完成日期。

我在想这样的事情:

=如果(J5大于0,WORKDAY(custom_function(G4),J5,乏$ A $ 2:$ A $ 27)"&#34)

对这种情况的任何想法?

2 个答案:

答案 0 :(得分:2)

不幸的是,这是不可能的。你不能写“元”自定义函数。 参数v传递给您的函数,无论它只是一个单元格,一行还是一列,还是整个工作表始终是单元格的值,而不是它们的“引用”或范围对象。

好处是你已经有内置的功能来做到这一点,例如=COLUMN(C1)。每当你有一个内置功能替代自定义功能时,你应该使用内置功能。好吧,我会更进一步说:永远不要使用自定义功能。如果确实需要脚本进行计算,请使用另一种调用方式,即自定义菜单,图像“按钮”,onEdit触发器等。特别是现在你正在学习,完全避免自定义功能。他们不值得。

答案 1 :(得分:1)

+ Henrique已回答了关于将哪些信息传递给自定义函数的一般问题。


为了回答编辑中的特定用例,可能会有一个带有本机函数的公式(假设G列中的日期按升序排列,状态为F列):

=IF(J5>0;WORKDAY(MAX(FILTER(G$2:G4;F$2:F4<>"HOLD"));J5;vars!$A$2:$A$27);"")