【发布时间】:2017-11-16 09:08:24
【问题描述】:
我想以编程方式应用自定义数字格式,以便我可以在我的单元格中使用自定义货币符号(例如加密货币)并将它们保留为数字,以便我可以对它们进行数学运算或绘制数值图表。
我已经看过以下选项:
如果我使用电子表格函数“CONCATENATE”,我会得到一个字符串,并且无法使用最终值进行数学运算或图表。
电子表格函数 TEXT() 可以获取数字格式以显示我想要的方式,但并非所有自定义货币符号都“有效” - 例如,以下将值转换为文本字符串,我无法使用数学/图表它。
例如:=TEXT(SUM(C5:C7),"Ƀ#,##0.00000000")
TEXT() 参考:https://support.google.com/docs/answer/3094139?hl=en
- 如果我创建一个自定义函数,比如
format(cell),并使用 JS 将任何文本字符串添加到值中,它就不再是数字类型了。
例如:function GBP(amt) { return '£' + parseFloat(amt).toFixed(2)); }
这也不起作用,因为结果字符串不是数字:
function BTC(amt) { return parseFloat('Ƀ' + parseFloat(amt).toFixed(2)); }
setNumberFormat(format)不能用于通过电子表格公式调用的自定义函数。复制其他单元格格式?我也认为这是一种解决方法,但如果我必须为每个想要正确格式的单元格复制和粘贴格式,它看起来真的效率不高:Applying "Automatic" number formatting
将值复制到另一列仅用于条件格式,原始数字仅用于数学/图表的范围。这更像是一种解决方法,而不是一个干净的解决方案。
简而言之,我只想将自定义货币符号添加到我的数字中,并且仍然能够使用它们进行数学计算和图表。有谁知道通过 Google Apps 脚本或电子表格功能/菜单直接有效的方法?
【问题讨论】:
-
为什么不只是格式>数字>更多格式>自定义数字格式并提供
[$Ƀ]#,##0.00000000? -
query可以进行自定义格式设置,而无需将其设为文本。您可以尝试在工作表 API 中使用查询而不是text()。 -
@RobinGertenbach 我不能这样做的原因是因为单元格值是动态的 - 这些值由数据验证下拉菜单确定。所以不同的值需要不同的格式。您的方法将为该单元格提供适用于所有条件的格式。
标签: javascript google-apps-script google-sheets custom-function