寻找Google电子表格的“ isFormula”公式


13

是否有一个函数可以判断特定单元格是否具有简单(手动输入)值或公式?

Answers:


5

有了这个小片段,您就可以做到。

function isFormula(startcol, startrow) {
  // prepare string
  var str = String.fromCharCode(64 + startcol) + startrow;

  // retrieve formula
  var fCell = SpreadsheetApp.getActiveSpreadsheet()
    .getRange(str).getFormula();

  // return false if empty else true 
  return fCell ? true : false;
}

用法

在此处输入图片说明

这个答案中,汤姆·霍伍德(Tom Horwood)找到了一种规避引用用法的方法。

在“工具”>“脚本编辑器”下添加脚本,然后按bug按钮以激活身份验证。

我为您创建了一个示例文件:检查公式


我在流浪...您的函数实际上正在获取一个字符串,该字符串是一个单元格的地址isFormula2("A1")。所以我尝试创建一个这样的新版本:function isFormula2(cell) { return (cell.getFormula())!=""; } 我希望它可以使用调用,isFormula2(A1)但这似乎无法正常工作,并且在尝试调试时显示cell为undefined ...知道为什么会这样,如果可能的话改变了,所以它将f(A1)代替f("A1")
epeleg 2014年

@epeleg参阅我的修订答案。
Jacob Jan Tuinstra 2014年

:),所以您对其进行了更改,以使其现在不再是获取地址,而是获取行和列。这里没有语法,这样调用就可以了isFormula(a1)吗?(在MS Excel中,这将是一个获取范围参数的函数)
epeleg 2014年

@epeleg最近的是isFormula_1(“ A2:A2”),看看我的示例文件。自定义功能以这种方式工作。没有引号,您将获得价值。带引号的字符串可以原样使用,但不能被复制/粘贴。COLUMN和ROW解决方案只是一个回合(不可避免)。
Jacob Jan Tuinstra 2014年

如果使用isFormula(a1:a1)调用自定义函数,它将获得什么值?那isFormula(a1:b2)又如何呢?
epeleg 2014年

9

简短答案

使用ISFORMULA()内置函数。

背景与说明

我想我只是在新的Google表格中发现了一个未记录的公式。@Pnuts表示该CELL公式无效(部分是因为该公式仅在新的Google表格中可用),因此我将代码复制到了新的Google表格中。引发一个错误,告诉我我的(自定义)公式仅接受一个参数,而不接受两个参数:
在此处输入图片说明

将NAME重命名isFormula为其他名称,导致自定义功能正常运行。在这种情况下,我创建了另一个Google表格并使用了isFormula公式。该公式未出现在自动完成功能中,但是可以正常工作:
在此处输入图片说明

因此,如果该公式在新版Google表格中都可用,那么这将是最佳答案:

=isFormula(A1)

注意

仅在新的Google表格中可用。我已经请其他几个人确认新公式并得到确认。由于没有记录,因此不确定其实现,并且可能会消失。在ARRAYFORMULA这种新的配方使用时无法正常工作。

我为您创建了一个示例文件:isFormula


很好 Google似乎采纳了我的建议:)但是,如何切换到“ New Google Sheets”?
epeleg 2014年

有趣。它适用于我的Gmail帐户,但不适用于我的Google Apps帐户...
epeleg 2014年

2
现在记录了ISFORMULA()。见support.google.com/docs/answer/6270316?hl=en
鲁文

2

ISFORMULA()Google 似乎提供了一个隐藏的内置函数。我意识到当我删除自己的功能并且仍在工作时。我在一个新的电子表格中尝试过,但仍然可以使用。没有缓存问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.