Google 表格中的条件格式:我可以在 'custom formula is:' 字段中使用自定义函数吗?
Conditional formatting in Google Sheets: Can I use custom function in the 'custom formula is:' field?
-
google-sheets
-
google-apps-script
-
gs-conditional-formatting
-
google-sheets-custom-function
-
google-sheets-conditionalformatting
在 Google spreadsheet 中应用条件格式时,我想知道是否可以使用我通过脚本编辑器在字段 'custom formula is:' 中创建的自定义函数。这是我所做的:
前往 'script editor' 并输入我的 fn 如下:
function foo (param1, param2, param3) {
if (condition to check) {
...some action;
return true;
} else {
return false;
}
}
并保存。
在 sheet 中,选择单元格并打开 'conditional formatting' 对话框
创建了新规则并在字段 'custom formula is:' 中键入以下内容
=foo(param1, param2, param3)
不幸的是,这没有用。
加法
这是 sample sheet...
看到里面的两个任务。我的目标是让 'task title' 自动写入黄色字段内(参见第 6 行中我手动输入值的任务)。
我已经尝试过的是:
- 分配给 H5:BB7
范围内的每个单元格,公式如下:=if(H=D5; B5; "")
这将检查开始日期是否等于单元格日期并显示任务标题。
这样就可以了,但是即使 'overflow' 打开,带有任务标题的单元格的内容也会被剪切,因为下一个单元格不为空。
简答
无法在 Google 表格的条件格式内置用户界面中将自定义函数用作自定义公式的一部分。
说明
在 Google 表格中,custom function
类似于电子表格内置函数,但由用户使用 Google Apps 脚本编辑器编写。他们不能修改其他对象,只能修改return一个或多个值。
另一方面,只有在将自定义函数添加到单元格或至少其中一个参数发生变化时,才会计算自定义函数。他们不能使用非确定性函数作为参数,如 NOW()、TODAY()、RAND() 和 RANDBETWEEN()。
测试
为了测试简短回答中的语句,我创建了一个做了以下操作:
- 创建一个简单的自定义函数
function two() {
return 2;
}
- 在条件格式侧面板中将自定义函数添加为自定义公式的一部分
=two()=2
结果:
没有任何变化。
参考资料
我还发现自定义函数不能用于条件格式。但是,我找到了一个非常简单的解决方法。
我尝试使用的自定义公式是:
=hasGreen(CELL("address",$H3)&":"&CELL("address",$M3))
即。根据该行中的一系列其他单元格格式化单元格。
我的解决方案是将上述公式放入 P 列。然后我将条件格式的自定义公式更改为 =P3
工作得很好。对 H3:M3 的任何更改都会调用 hasGreen
并更新 P3 的值。条件格式会记录 P3 的任何更改,并调整格式。
google-sheets
google-apps-script
gs-conditional-formatting
google-sheets-custom-function
google-sheets-conditionalformatting
在 Google spreadsheet 中应用条件格式时,我想知道是否可以使用我通过脚本编辑器在字段 'custom formula is:' 中创建的自定义函数。这是我所做的:
前往 'script editor' 并输入我的 fn 如下:
function foo (param1, param2, param3) { if (condition to check) { ...some action; return true; } else { return false; } }
并保存。
在 sheet 中,选择单元格并打开 'conditional formatting' 对话框
创建了新规则并在字段 'custom formula is:' 中键入以下内容
=foo(param1, param2, param3)
不幸的是,这没有用。
加法
这是 sample sheet...
看到里面的两个任务。我的目标是让 'task title' 自动写入黄色字段内(参见第 6 行中我手动输入值的任务)。
我已经尝试过的是:
- 分配给 H5:BB7
范围内的每个单元格,公式如下:=if(H=D5; B5; "")
这将检查开始日期是否等于单元格日期并显示任务标题。
这样就可以了,但是即使 'overflow' 打开,带有任务标题的单元格的内容也会被剪切,因为下一个单元格不为空。
简答
无法在 Google 表格的条件格式内置用户界面中将自定义函数用作自定义公式的一部分。
说明
在 Google 表格中,custom function
类似于电子表格内置函数,但由用户使用 Google Apps 脚本编辑器编写。他们不能修改其他对象,只能修改return一个或多个值。
另一方面,只有在将自定义函数添加到单元格或至少其中一个参数发生变化时,才会计算自定义函数。他们不能使用非确定性函数作为参数,如 NOW()、TODAY()、RAND() 和 RANDBETWEEN()。
测试
为了测试简短回答中的语句,我创建了一个做了以下操作:
- 创建一个简单的自定义函数
function two() { return 2; }
- 在条件格式侧面板中将自定义函数添加为自定义公式的一部分
=two()=2
结果: 没有任何变化。
参考资料
我还发现自定义函数不能用于条件格式。但是,我找到了一个非常简单的解决方法。
我尝试使用的自定义公式是:
=hasGreen(CELL("address",$H3)&":"&CELL("address",$M3))
即。根据该行中的一系列其他单元格格式化单元格。
我的解决方案是将上述公式放入 P 列。然后我将条件格式的自定义公式更改为 =P3
工作得很好。对 H3:M3 的任何更改都会调用 hasGreen
并更新 P3 的值。条件格式会记录 P3 的任何更改,并调整格式。