有没有一种方法可以有条件地格式化从arrayformula填充的单元格?

时间:2018-08-17 23:06:04

标签: google-apps-script google-sheets conditional-formatting

背景: 我有很多人编辑的工作表。我花了更多的时间去考虑用户验证它。 (如果您有好奇心,可以在这篇文章的底部列出一些尝试过的方法)。效果最好的解决方案是让我的用户“查看”单元格中是否包含公式。我有一个应用程序脚本,当与条件格式结合使用时,该脚本会突出显示该单元格,提醒他们不要在其上键入内容。不过,这还不能完全解决问题。 (尤其是当他们插入行时。)

问题: 我最近修改了这些工作表,用少量的数组公式代替了数千个公式。这已经解决了很多问题,但是现在,当我的用户在arrayformula列中输入单元格时,整个数据列都消失了,这让我的用户有些吃惊。我希望可以通过某种方式修改isFormula应用程序脚本,以突出显示该脚本适用于的单元格。我的想法是:弄清楚单元格中的公式是否为arrayformula。如果为true,则突出显示由公式填充的单元格。

我希望更改的脚本:isFormula():

/**
 * Used to conditionally format cells having formulas
 *
 * @param {number,number} input The column number and 
          column row to start evaluating this formual and starting 
 * @return if getFormula() returns any value, false otherwise
 * @customfunction
 */
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;
}

条件格式设置规则:

=isformula(A1)

我尝试过的解决方法:

  • 用户培训:我确实尝试过让他们注意到是否存在 公式,而不是在上面键入内容,但是这种方法失败了。我的使用者 会在公式上键入内容,插入行或意外移动 牢房,我会再次回到这里。
  • 应用权限::我尝试将权限限制为具有公式的单元格,但这导致排序和筛选出现问题。有数百行...它们确实需要能够排序。

向助手大喊:

  • 感谢您的帮助!您真是太棒了!

-s。

0 个答案:

没有答案