我想以编程方式应用自定义数字格式,以便我可以在我的单元格中使用自定义货币符号(例如加密货币)并将它们保存为数字,以便我可以使用它们进行数学计算或绘制值。
我已经查看了以下选项:
如果我使用电子表格函数“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 :(得分:1)
要以编程方式将货币格式应用于单个数字并将其保留为数字,以便使用setNumberFormat(string)进行算术运算。
注意:
示例:
setNumberFormat是部分实现的Google Apps脚本功能,目前应用英镑货币格式([$£-809]#,##0.00
)或默认格式(#,##0.00
)。测试函数用于调用它将“英镑”分配给格式参数。
function test(){
setNumberFormat('Pound sterling');
}
function setNumberFormat(format) {
var range = SpreadsheetApp.getActiveRange();
var numberFormat = '';
try {
switch (format){
case 'Pound sterling':
numberFormat = '[$£-809]#,##0.00';
break;
default:
numberFormat = '#,##0.00';
break;
}
range.setNumberFormat(numberFormat);
} catch (e){
throw new Error('There was an error: ' + e);
}
}
相关Q& A
参考