Google 工作表以编程方式应用自定义货币符号数字格式
Google Sheets Programmatically Apply Custom Currency Symbols Number Format
我想以编程方式应用自定义数字格式,以便我可以在我的单元格中使用自定义货币符号(例如加密货币)并将它们保留为数字,以便我可以对它们进行数学运算或绘制值图表。
我已经查看了以下选项:
如果我使用电子表格函数 "CONCATENATE",我会得到一个字符串,但无法使用最终值进行数学运算或图表处理。
电子表格函数 TEXT() 可以获得数字格式来显示我想要的方式,但不是所有自定义货币符号 "work" - 下面的示例将值转换为文本字符串,我不能用它做 math/charts。
例如:=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
将值复制到另一列只是为了条件格式和原始数字仅用于 maths/charting 的范围。这更像是一种解决方法,而不是一个干净的解决方案。
简而言之,我只想将自定义货币符号添加到我的数字中,并且仍然能够使用它们进行数学运算和绘制图表。有谁知道通过 Google Apps 脚本或电子表格 functions/menus 进行操作的直接方法吗?
要以编程方式将货币格式应用于单个数字并将其保留为数字以便对其进行算术运算,请使用 setNumberFormat(string)。
备注:
- 自定义函数不能用于应用数字格式,因为自定义函数不能修改单元格格式。
- 条件格式不应用数字格式
- Google 文档不包含货币格式。它们可以从 Google 表格 UI 中获得。首先通过单击格式 > 更多格式 > 更多货币为单元格设置所需的货币格式,然后单击格式 > 更多格式 > 自定义数字格式...,然后从文本框中复制格式。
示例:
setNumberFormat 是部分实现的 Google Apps 脚本函数,目前应用英镑货币格式 ([$£-809]#,##0.00
) 或默认格式 (#,##0.00
)。测试函数用于调用它,将 'Pound sterling' 分配给格式参数。
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);
}
}
相关问答
参考资料
我想以编程方式应用自定义数字格式,以便我可以在我的单元格中使用自定义货币符号(例如加密货币)并将它们保留为数字,以便我可以对它们进行数学运算或绘制值图表。
我已经查看了以下选项:
如果我使用电子表格函数 "CONCATENATE",我会得到一个字符串,但无法使用最终值进行数学运算或图表处理。
电子表格函数 TEXT() 可以获得数字格式来显示我想要的方式,但不是所有自定义货币符号 "work" - 下面的示例将值转换为文本字符串,我不能用它做 math/charts。
例如:=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
将值复制到另一列只是为了条件格式和原始数字仅用于 maths/charting 的范围。这更像是一种解决方法,而不是一个干净的解决方案。
简而言之,我只想将自定义货币符号添加到我的数字中,并且仍然能够使用它们进行数学运算和绘制图表。有谁知道通过 Google Apps 脚本或电子表格 functions/menus 进行操作的直接方法吗?
要以编程方式将货币格式应用于单个数字并将其保留为数字以便对其进行算术运算,请使用 setNumberFormat(string)。
备注:
- 自定义函数不能用于应用数字格式,因为自定义函数不能修改单元格格式。
- 条件格式不应用数字格式
- Google 文档不包含货币格式。它们可以从 Google 表格 UI 中获得。首先通过单击格式 > 更多格式 > 更多货币为单元格设置所需的货币格式,然后单击格式 > 更多格式 > 自定义数字格式...,然后从文本框中复制格式。
示例:
setNumberFormat 是部分实现的 Google Apps 脚本函数,目前应用英镑货币格式 ([$£-809]#,##0.00
) 或默认格式 (#,##0.00
)。测试函数用于调用它,将 'Pound sterling' 分配给格式参数。
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);
}
}
相关问答
参考资料