# Money 脚本和图表功能

Money() 用于使用数据加载脚本中设置的系统变量或操作系统（如果不提供格式字符串）中设置的格式，以及可选的小数位和千分位分隔符，将表达式的格式设置为数字形式的货币值格式。

语法：

Money(number[, format[, dec\_sep[, thou\_sep]]])

返回数据类型： 双

参数

| 参数 | 描述 |
| --- | --- |
| number | 可以设置数字的格式。 |
| format | 说明如何设置结果货币字符串格式的字符串。如果省略，则使用数据加载脚本中为 `MoneyFormat` 设置的值。<br><br>`Money` 功能支持多种格式选项，可用于不同的日期结构，例如：<br><br>`$#,##0.00`：添加一个美元符号和两个小数位。<br><br>`€ #,##0`：添加一个欧元符号，没有小数点，欧元符号后有一个空格。<br><br>`​¥#,##0`：添加不含小数点的日元符号。<br><br>`$#,##0;($#,##0)`：用括号格式化负值。<br><br>`₣ #.##0,00`：添加瑞士法郎符号，用句号作为千位分隔符，用逗号表示小数（例如 `  ₣ 1.000,00 `）。<br><br>`R #,##0.00`：南非兰特符号，小数点后两位，兰特符号后有空格。<br><br>`$ #,##0.000`：在美元格式中增加三位小数。 |
| dec\_sep | 指定小数位数字分隔符的字符串。如果省略，则使用数据加载脚本中设置的 `MoneyDecimalSep` 值。<br><br>`Money` 函数支持多种小数位分隔符格式，例如：<br><br>逗号 '`,`'：例如，`$1,000,00` 代表一千美元。<br><br>句号 '`.`'：例如，`€ 1,000.00`。<br><br>连字符 '`-`'：当使用连字符代替传统的句号或逗号作为小数位分隔符时，它显示的值类似`¥1,000-00`。 |
| thou\_sep | 指定千分位数字分隔符的字符串。如果省略，则使用数据加载脚本中设置的 `MoneyThousandSep` 值。<br><br>`Money` 函数支持多种千位数字分隔符选项：<br><br>句号 '`.`' ：使用句号作为千位分隔符（在某些欧洲格式中很常见），如果与逗号小数位分隔符结合使用，则显示为 `$1.000,00`。<br><br>空格 ​' '：使用空格作为千位分隔符，这在一些欧洲国家很常见。显示为 `€ 1 000.00`。<br><br>下划线 '`_`' ：使用下划线作为千位分隔符，有时用于技术格式或特定地区格式。显示类似 `$1_000.00` 的值。 |

如果省略 format 、dec\_sep 和 thou\_sep 参数，在对输出的每个特定部分进行格式化时，将使用操作系统中设置的货币格式。在创建脚本时，操作系统设置会作为系统变量自动包含在内，进而确保这些设置在整个应用程序中保持一致。

这些系统变量分别是 MoneyFormat 、MoneyDecimalSep 和 MoneyThousandSep ，并分别映射到 format 、dec\_sep 和 thou\_sep 函数参数。

示例：图表表达式

| 示例 | 结果 |
| --- | --- |
| `Money( 35648 )` | 当 `MoneyFormat` 设置为 `kr ##0,00` 并且 `MoneyThousandSep` 为点号 `' '` 时，返回 `kr 35 648,00`。 |
| `Money( 35648, '#,##0 ¥', '.' , ',' )` | 返回 `3,564,800 ¥` ，方法是忽略 `MoneyFormat` 设置和 `MoneyThousandSep` 设置，因为函数中提供了可选参数 `Format`、`dec_sep` 和 `thou_sep`。 |
| `Money(35648)` | 当 `MoneyFormat` 设置为 `$ #,##0.00` 并且 `MoneyThousandSep` 为逗号 `','` 时，返回 `$ 35,648.00`。 |

## 示例 - Money 基本原理

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/FormattingFunctions/Money.htm)

#### 图表表达式

概述

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 加载到名为 `Example` 的数据表中的数据集。

* 数据表中有一个名为`InputValue` 的字段。

* 以下是变量格式：

  * `MoneyFormat` 变量，其使用格式 `kr ##0,00`

  * `MoneyThousandSep` 变量设置为使用空格 `' '`

加载脚本

```
SET MoneyFormat='kr ##0,00';
SET MoneyThousandSep=' ';
Example:
Load * inline [
InputValue
35648
3564800
];
```

结果

加载数据并打开工作表。创建新表并将该字段添加为维度：

* `InputValue`

创建以下度量：

* `=Money(InputValue)`，将值视为使用系统设置格式化的钱币。

* `=Money(InputValue, '#,##0 ¥', '.' , ',')`，将值视为使用函数中提供的格式格式化的钱币。

* `=Num(InputValue)`，返回数值。

Results table

| InputValue | Money(InputValue) | Money(InputValue, '#,##0 ¥', '.' , ',') | Num(InputValue) |
| --- | --- | --- | --- |
| 35648 | kr35 648,00 | 35,648 ¥ | 35648 |
| 3564800 | kr3 564 800,00 | 3,564,800 ¥ | 3564800 |

在本例中，您可以看到 `Money` 函数如何显示值，以及格式参数中的值如何改变输出。

## 示例 - 使用不同格式设置的钱币基本特性

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/FormattingFunctions/Money.htm)

#### 图表表达式

概述

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 加载到名为 `Example` 的数据表中的数据集。

* 数据表中有一个名为`InputValue` 的字段。

* 以下是变量格式：

  * `MoneyFormat` 变量，其使用格式 `$ #,##0.00`

  * `MoneyThousandSep` 变量设置为使用逗号 `','`

加载脚本

```
SET MoneyFormat='$ #,##0.00';
SET MoneyThousandSep=',';
Example:
Load * inline [
InputValue
35648
3564800
];
```

结果

加载数据并打开工作表。创建新表并将该字段添加为维度：

* `InputValue`

创建以下度量：

* `=Money(InputValue)`，将值视为使用系统设置格式化的钱币。

* `=Money(InputValue, '#,##0 ¥', '.' , ', )`，将值视为使用函数中提供的格式格式化的钱币。

* `=Num(InputValue)`，返回数值。

Results table

| InputValue | Money(InputValue) | Money(InputValue, '#,##0 ¥', '.' , ',') | Num(InputValue) |
| --- | --- | --- | --- |
| 35648 | $ 35,648.00 | 35,648 ¥ | 35648 |
| 3564800 | $ 3,564,800.00 | 3,564,800 ¥ | 3564800 |

在本例中，您可以看到 `Money` 函数如何显示值，以及格式参数中的值如何改变输出。

## 示例 – Money 场景

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/FormattingFunctions/Money.htm)

#### 图表表达式

概述

客户销售数据以各种货币被接收。您希望使用相关货币格式在表格中显示数据。

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 加载到名为 `Example` 的数据表中的数据集。

* 数据表中有以下字段：

  * `Customer`
  * `CurrencyCode`
  * `Sales`

* 以下是变量格式：

  * `MoneyFormat` 变量，其使用格式 `$ ###0.00;-$ ###0.00`

  * `MoneyThousandSep` 变量设置为使用逗号 `','`

  * `MoneyDecimalSep` 变量设置为使用句点 '.'

加载脚本

```
SET MoneyThousandSep=',';
SET MoneyDecimalSep='.';
SET MoneyFormat='$ ###0.00;-$ ###0.00';
Example:
Load * inline [
Customer, CurrencyCode, Sales
Customer A, USD, 100008
Customer B, EUR, 12500
Customer C, YEN, 15000
];
```

结果

加载数据并打开工作表。创建新表并将该字段添加为维度：

* `Customer`

创建以下度量：

* `=Money(Sales, If(CurrencyCode = 'USD', '$#,##0.00', If(CurrencyCode = 'EUR', '€ #,##0.00', '¥#,##0')))`，以正确的货币格式显示货币。

Results table

| Customer | Money(Sales, If(CurrencyCode = 'USD', '$#,##0.00', If(CurrencyCode = 'EUR', '€ #,##0.00', '¥#,##0'))) |
| --- | --- |
| Customer A | $100,008.00 |
| Customer B | € 12,500.00 |
| Customer C | ¥15,000 |

现在，销售数据使用度量表达式中定义的货币格式。十进制和千位参数使用加载脚本中的设置。