Google表格以编程方式应用自定义货币符号数字格式

时间:2017-11-16 09:08:24

标签: javascript google-apps-script google-sheets custom-function

我想以编程方式应用自定义数字格式,以便我可以在我的单元格中使用自定义货币符号(例如加密货币)并将它们保存为数字,以便我可以使用它们进行数学计算或绘制值。

我已经查看了以下选项:

  • 如果我使用电子表格函数“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脚本或电子表格功能/菜单这样做的直接方式?

1 个答案:

答案 0 :(得分:1)

要以编程方式将货币格式应用于单个数字并将其保留为数字,以便使用setNumberFormat(string)进行算术运算。

注意:

  • 自定义函数不能用于应用数字格式,因为自定义函数无法修改单元格格式。
  • 条件格式不适用数字格式
  • Google文档不包含货币格式。它们可以从Google表格UI获得。首先,点击格式>设置单元格所需的货币格式。更多格式>更多货币,点击格式>更多格式>自定义数字格式...并从文本框中复制格式。

示例:

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

参考

相关问题