Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google工作表以编程方式应用自定义货币符号数字格式_Javascript_Google Apps Script_Google Sheets_Custom Function - Fatal编程技术网

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

Javascript Google工作表以编程方式应用自定义货币符号数字格式,javascript,google-apps-script,google-sheets,custom-function,Javascript,Google Apps Script,Google Sheets,Custom Function,我想通过编程应用自定义数字格式,这样我就可以在单元格中使用自定义货币符号(例如加密货币),并将它们保留为数字,这样我就可以对它们进行数学运算或绘制数值图表 我已经研究了以下选项: 如果我使用电子表格函数“CONCATENATE”,我会得到一个字符串,无法用最终值进行数学或图表计算 电子表格函数TEXT()可以获取数字格式,以显示我想要的但不是所有自定义货币符号“工作”的方式-例如,下面的函数将值转换为文本字符串,我无法使用它进行数学/图表处理 例如:=文本(总和(C5:C7),“0.0000

我想通过编程应用自定义数字格式,这样我就可以在单元格中使用自定义货币符号(例如加密货币),并将它们保留为数字,这样我就可以对它们进行数学运算或绘制数值图表

我已经研究了以下选项:

  • 如果我使用电子表格函数“CONCATENATE”,我会得到一个字符串,无法用最终值进行数学或图表计算

  • 电子表格函数TEXT()可以获取数字格式,以显示我想要的但不是所有自定义货币符号“工作”的方式-例如,下面的函数将值转换为文本字符串,我无法使用它进行数学/图表处理

例如:
=文本(总和(C5:C7),“0.00000000”)

文本()上的引用:

  • 如果我创建一个自定义函数,比如说
    format(cell)
    ,并使用JS向值中添加任何文本字符串,那么它就不再是数字类型
例如:
函数GBP(amt){return'英镑'+parseFloat(amt).toFixed(2));}

这也不起作用,因为结果字符串不是数字:

函数BTC(amt){返回parseFloat('Ƀ'+parseFloat(amt).toFixed(2));}

  • setNumberFormat(format)
    不能用于通过电子表格公式调用的自定义函数

  • 复制其他单元格格式?我也将此视为一种解决方法,但如果我必须为每个单元格复制并粘贴格式(我需要正确的格式),则看起来效率很低:

  • 将值复制到另一列仅用于条件格式,原始数字仅用于数学/图表。这更多的是一种解决方法,而不是一种干净的解决方案


简而言之,我只想在我的数字中添加自定义货币符号,并且仍然能够使用它们进行数学和图表运算。有人知道通过Google Apps脚本或电子表格功能/菜单直接实现这一点的有效方法吗?

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

注:

  • 自定义函数不能用于应用数字格式,因为自定义函数不能修改单元格格式
  • 条件格式不应用数字格式
  • 谷歌文档不包括货币格式。它们可以从谷歌表单用户界面上获得。首先,通过单击格式>更多格式>更多货币,为单元格设置所需的货币格式,然后单击格式>更多格式>自定义数字格式。。。并从文本框中复制格式
例如:

setNumberFormat是一个部分实现的Google应用程序脚本函数,目前应用英镑货币格式(
[$809]#、##0.00
)或默认格式(
、##0.00
)。test函数用于调用它,为format参数指定“英镑”

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);
  }
}
相关问答

参考资料


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

注:

  • 自定义函数不能用于应用数字格式,因为自定义函数不能修改单元格格式
  • 条件格式不应用数字格式
  • 谷歌文档不包括货币格式。它们可以从谷歌表单用户界面上获得。首先,通过单击格式>更多格式>更多货币,为单元格设置所需的货币格式,然后单击格式>更多格式>自定义数字格式。。。并从文本框中复制格式
例如:

setNumberFormat是一个部分实现的Google应用程序脚本函数,目前应用英镑货币格式(
[$809]#、##0.00
)或默认格式(
、##0.00
)。test函数用于调用它,为format参数指定“英镑”

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);
  }
}
相关问答

参考资料


为什么不直接格式化>数字>更多格式>自定义数字格式并提供
[$Ƀ]#、##0.00000000
查询
可以进行自定义格式化,而无需将其作为文本。您可以尝试在sheets API中使用query而不是
text()
。@RobinGertenbach我之所以不能这样做,是因为单元格值是动态的-这些值是由数据验证下拉列表确定的。因此,不同的值需要不同的格式。您的方法将为该单元格提供一种适用于所有条件的格式。为什么不直接使用format>Number>More Formats>Custom Number format并提供
[$Ƀ]#、ŧŧ0.00000000
query
可以进行自定义格式设置,而无需将其设置为文本。您可以尝试在sheets API中使用query而不是
text()
。@RobinGertenbach我之所以不能这样做,是因为单元格值是动态的-这些值是由数据验证下拉列表确定的。因此,不同的值需要不同的格式。您的方法将为该单元格提供一种适用于所有条件的格式。