问题描述
我在一个单元格中收到了来自用户的格式为“ 12mm * 300 * 300”的输入。我需要使用一些公式或脚本来计算相同的值,但是我无法获得所需的结果。我直接在Google表格中使用的公式是
=concatenate("=Round(",substitute(E1,"mm",""),"*7.85,1)")
但相同的结果是输出
=Round(12*300*300*7.85,1)
,但未计算相同。其次,我尝试使用google脚本函数setformula进行相同的操作,但这也会导致错误。
var formul =["=,concatenate(\"Round(\",substitute($B"+row+",\"mm\",\"\"),\"\*7.85/1000000,1)\"))"];
spreadsheet.getRange(range4).setFormula(formul);
解决方法
Google表格无法评估包含Google表格内置函数的“公式”(文本值)。
一种选择是使用setFormula
/ setFormulas
1 使用Google Apps脚本将文本写为公式。
关于
var formul =["=,concatenate(\"Round(\",substitute($B"+row+",\"mm\",\"\"),\"\*7.85/1000000,1)\"))"];
spreadsheet.getRange(range4).setFormula(formul);
由于setFormula
需要一个字符串,但是您formul
声明正在分配一个数组,并且该数组的成员未使用正确的公式语法来构建,因此无法正常工作。
-
=
后面有一个逗号(将其删除) -
还有多余的逗号和
"
-
代替使用内置函数
SUBSTITUTE
,而使用String.prototype.replace
之类的JavaScript方法:
var E1 = "2mm*300*300";
var formula = "=Round("+E1.replace('mm','')+"*7.85/1000000,1))"
console.info(formula)
注意:
- 它可能也可以使用setValue / setValues,但是您将依赖于Google Sheet数据类型的自动检测功能,有时这种方法无法正常工作
相关
- Is there a way to evaluate a formula that is stored in a cell?
- How to use a formula written as a string in another cell [evaluate for Google Spreadsheet]
- Google sheets custom function built-in function
- Convert a string to a formula in Google Spreadsheet
- How to get a string and use it as part of the syntax in apps script?
查询可以对字符串进行简单的数学运算,例如加,减,乘和除。试试
=ROUND(QUERY(,"SELECT "&CONCATENATE(SUBSTITUTE(E1,"mm",""),"*7.85")&" LABEL "&CONCATENATE(SUBSTITUTE(E1,"*7.85")&" ''",0))