# Money#スクリプトおよびチャート関数

Money#()は、形式の文字列がある場合を除き、ロード スクリプトまたはオペレーティング システムで設定された形式で、テキスト文字列を金額値に変換します。カスタムの小数点および桁区切り記号は、オプションのパラメータです。

構文:

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

戻り値データ型： デュアル

引数

| 引数 | 説明 |
| --- | --- |
| text | 評価対象のテキスト文字列。 |
| format | 文字列を数字間隔に変換する際にしようが予想される入力形式を説明する文字列。<br><br>省略されている場合は、データ ロード スクリプトで設定された `MoneyFormat` 値が使用されます。<br><br>`Money#` 関数は、さまざまな通貨構造に対して多くの形式オプションをサポートしています。次に例を示します。<br><br>​`$#,##0.00`: ドル記号と小数点 2 桁を追加します。<br><br>`€ #,##0`: ユーロ記号を追加し、小数点を付けず、ユーロ記号の後にスペースを入れます。<br><br>`​¥#,##0`: 小数点なしの日本円記号を追加します。<br><br>​`$#,##0;($#,##0)`: 負の値を括弧で囲んでフォーマットします。<br><br>​`₣ #.##0,00`:​ 3 桁区切りとしてピリオド、小数点としてカンマを使用したスイス フラン記号を追加します (例: `  ₣ 1.000,00 `)。<br><br>​`R #,##0.00`: 小数点第 2 位とランド記号の後のスペースがある南アフリカのランド記号。<br><br>​`$ #,##0.000`: ドル形式に小数点以下 3 桁を追加します。 |
| dec\_sep | 小数点記号を指定する文字列。省略されている場合は、データ ロード スクリプトで設定された `MoneyDecimalSep` 値が使用されます。<br><br>`Money#` 関数は、次のような多くの小数点区切り形式をサポートしています。<br><br>カンマ​「`,`」: 千ドルは `$1,000,00` など。<br><br>ピリオド 「`.`」: ​`€ 1,000.00` など。<br><br>ハイフン「`-`」: 小数点の記号として従来のピリオドやカンマの代わりに使用すると、`¥1,000-00` のような値が表示されます。 |
| thou\_sep | 3 桁区切りの記号を指定する文字列。省略されている場合は、データ ロード スクリプトで設定された `MoneyThousandSep` 値が使用されます。<br><br>`Money#` 関数は、3 桁区切りの記号の多くのオプションをサポートしています。<br><br>ピリオド​「`.`」: 3 桁ごとの区切りにピリオドを使用します (一部のヨーロッパ形式で一般的)。小数点の記号のコンマと組み合わせると `$1.000,00` として表示されます。<br><br>スペース​「 」: 一部のヨーロッパ諸国で一般的な、3 桁ごとの区切りにスペースを使用します。`€ 1 000.00` と表示されます。<br><br>アンダースコア​「`_`」:​ 3 桁ごとの区切りとしてアンダースコアを使用します。これは、技術的な形式や特定の地域の形式で使用されることがあります。`$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/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/InterpretationFunctions/money_hash.htm)

#### ロード スクリプト

概要

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* 「`Example`」というデータ テーブルにロードされるデータセット。

* データ テーブル内の 1 つの項目は `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` の各関数と形式を使用して値を表示する方法が示されます。2 番目の列には、`Money#` 関数を使用して計算された軸 `FormattedMoneyValue` が表示され、値は `'# ##0,00 kr',',',' '` の形式で通貨に変換されます。3 番目の列では、`Money` 関数を使用して `FormattedMoneyValue` の通貨形式を `'kr #,##0', '.' , ','` に変更します。4 番目の列では、`Num` 関数を使用して、システム変数の形式を使用して `FormattedMoneyValue` 軸の数値を表示します。

## 例 - Money# のシナリオ

[](https://help.qlik.com/en-US/sense/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` 内の通貨の値を評価し、形式を通貨から数値に変更できるようになりました。