# Money#指令碼與圖表函數

Money#() 將文字字串轉換為金額值，使用在載入指令碼或作業系統 (除非提供格式字串) 中設定的格式。自訂小數與千位分隔符號是選用參數。

語法：

Money#(text[, format[, dec\_sep [, thou\_sep ] ] ])

傳回的資料類型： 雙值

引數

| 引數 | 描述 |
| --- | --- |
| text | 要評估的文字字串。 |
| format | 描述當將字串轉換成間隔數值時預期要使用的輸入格式的字串。<br><br>如果省略，則會使用 `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` 這樣的值。 |

`Money#` 函數的作用一般和 `Num#` 函數相同，不過會從金額格式的指令碼變數或貨幣的系統設定取得小數點分隔符號和千位分隔符號的預設值。

範例：圖表運算式

| 範例 | 結果 |
| --- | --- |
| `Money#('35 648,37 kr' , '# ##0,00 kr',',',' ' )` | 若 `MoneyFormat` 設定為 `# ##0,00 kr`，會傳回 `35 648,37 kr`。需要在載入指令碼中設定以下內容，才能正確評估為數字：<br><br><ul> <li> <p><code>SET MoneyDecimalSep=',';</code> </p> </li> <li> <p><code>SET MoneyThousandSep=' ';</code> </p> </li> </ul> |
| `Money#( '$35,648.37', ' $#', '.', ',' )` | 若設定下列內容，會傳回 `$35,648.37`。<br><br><ul> <li> <p><code>MoneyFormat</code>為 <code>$#</code></p> </li> <li> <p><code>SET MoneyDecimalSep=',';</code> </p> </li> <li> <p><code>SET MoneyThousandSep=' ';</code> </p> </li> </ul> |

## 範例 - Money# 基礎事項

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/InterpretationFunctions/money_hash.htm)

#### 載入指令碼

概述

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 載入到稱為 `Example` 之資料表格的資料集。

* 資料表格中稱為 `MoneyValue` 的一個欄位。

* 前置載入使用 `Money#` 函數將資料中的文字值轉換為 Qlik Sense 可辨識為有效值的值。

載入指令碼

```
SET MoneyFormat='$ #,##0.00';
SET MoneyThousandSep=',';
Example:
Load *, Money#(MoneyValue, '# ##0,00 kr',',',' ') as FormattedMoneyValue;
Load * inline [
MoneyValue
35 648,37 kr
56 735,56 kr
] (delimiter is ';');
```

結果

載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度：

* `MoneyValue`

* `FormattedMoneyValue`

建立下列量值：

* `=Money( FormattedMoneyValue, 'kr #,##0', '.' , ',' )`，用來將值視為金錢，使用 `Money` 函數中設定的引數進行格式化。

* `=Num(FormattedMoneyValue)`，用來傳回透過 `Money#` 函數處理後的數值。

Results table

| MoneyValue | FormattedMoneyValue | Money( FormattedMoneyValue, 'kr #,##0', '.' , ',' ) | Num(FormattedMoneyValue) |
| --- | --- | --- | --- |
| 56 735,56 kr | 56 735,56 kr | kr 56,736 | 56735.56 |
| 35 648,37 kr | 35 648,37 kr | kr 35,648 | 35648.37 |

結果表格顯示如何使用下列函數和格式顯示值：`Money#`、`Money` 和 `Num`。第二欄顯示維度 `FormattedMoneyValue`，這是使用 `Money#` 函數所計算，以 `'# ##0,00 kr',',',' '` 格式將值變更為金錢。第三欄使用 `Money` 函數將 `FormattedMoneyValue` 的貨幣格式變更為 `'kr #,##0', '.' , ','`。第三欄使用 `Num` 函數使用系統變數中的格式顯示 `FormattedMoneyValue` 維度的數值。

## 範例 - Money# 使用情境

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/InterpretationFunctions/money_hash.htm)

#### 載入指令碼

概述

銷售訂單資料集包含使用不同貨幣的欄位。此範例向您顯示如何根據貨幣分離和加總銷售值。

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 載入到稱為 `Example` 之資料表格的資料集。

* 資料表格中的欄位如下：

  * `TransactionID`

  * `Currency`
  * `Amount`

* 為了示範目的，`MoneyDecimalSep`、`MoneyFormat` 和 `MoneyThousandSep` 系統變數使用的格式設定為與資料中使用的格式不同。

* 前置載入會載入欄位 `TransactionID`、`Currency` 和 `Amount`，並建立以下欄位：

  * `AmountValue`，此欄位使用 `Money#` 函數，以將接收到的文字轉換為系統理解的值。

載入指令碼

```
SET MoneyDecimalSep='-';
SET MoneyFormat='###0-00';
SET MoneyThousandSep=';';
Example:
LOAD
TransactionID,
Currency,
Amount,
IF(Currency = 'USD', Money#(Amount, '$#,##0.00','.',','),
IF(Currency = 'EUR', Money#(Amount, '€ #.##0,00',',','.'))) AS AmountValue
INLINE [
TransactionID, Currency, Amount
"TXN001", "USD", "$ 1,500.00"
"TXN002", "EUR", "€ 1.200,75"
"TXN003", "USD", "$ 1,750.50"
"TXN004", "EUR", "€ 950,00"
"TXN005", "USD", "$ 2,600.25"
];
```

結果

載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度：

* `TransactionID`

* `Currency`

* `Amount`

* `AmountValue`

建立下列量值：

* `Num(AmountValue)`

結果表格

| TransactionID | Currency | Amount | AmountValue | Num(AmountValue) |
| --- | --- | --- | --- | --- |
| TXN001 | USD | $1,500.00 | $ 1,500.00 | 1500 |
| TXN002 | EUR | € 1.200,75 | € 1.200,75 | 1200.75 |
| TXN003 | USD | $ 1,750.50 | $ 1,750.50 | 1750.5 |
| TXN004 | EUR | € 950,00 | € 950,00 | 950 |
| TXN005 | USD | $ 2,600.25 | $ 2,600.25 | 2600.25 |

結果顯示了 `Money#` 函數如何將文字值轉換為之後可進行評估的貨幣數值。例如，`Amount` 欄位中的值是文字，並且靠左對齊。不過，一旦這些內容透過 `Money#` 函數處理並建立新欄位 `AmountValue`，系統就會辨識為貨幣數值。最右側一欄使用的 `Num` 函數現在可以評估 `AmountValue` 中的貨幣值，並將格式從金錢變更為數字。