# XNPV - 图表函数

XNPV() 用于返回通过图表维度迭代 pmt 和 date 指定表达式中成对数值表示的现金流时间表（不一定是周期性）的聚合净现值。 所有付款按 365 天一年年折扣。

语法：

XNPV([TOTAL [&lt;fld{,fld}&gt;]] discount\_rate, pmt, date)

返回数据类型： 数字

信息注释默认情况下，结果将被格式化为货币。

计算 XNPV 的公式如下所示：

XNPV 聚合公式

XNPV 聚合公式

XNPV 聚合公式 ![XNPV 脚本函数的公式图像。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-xnpv-formula.png)

其中：

* `P``i`= 单期净现金流入流出 `i`

* `d``1`= 第一次付款日期

* `d``i` = 第 `i` 次付款日期

* `rate` = 贴现率

净现值 (NPV) 用于在给定折扣率的情况下计算未来现金流的当前总价值。要计算 XNPV，我们需要估计具有相应日期的未来现金流。在此之后，对于每次付款，我们将根据付款日期采用复合折扣率。

对一系列付款执行 XNPV 聚合类似于对这些付款执行求和聚合。不同之处在于，每个金额都会根据所选的折扣率（类似于利率）和未来付款的时间进行修改（或“打折扣”）。在 discount\_rate 参数设置为零的情况下执行 XNPV 将使 XNPV 等效于求和操作（在求和之前不会修改付款）。一般而言，discount\_rate 设置得越接近零，XNPV 结果就越类似于求和聚合的结果。

参数

| 参数 | 描述 |
| --- | --- |
| discount\_rate | discount\_rate 是付款折扣时依据的年费率。<br><br>值 0.1 表示 10% 的贴现率。 |
| pmt | 付款。表达式或字段包含与在 date 中指定的付款时间表对应的现金流。 正值被假定为流入，负值被假定为流出。<br><br>信息注释XNPV() 不会对初始现金流进行折扣，因为它总是在开始日期发生。后续付款按 365 天的年折扣。这与第一笔付款也打折的 NPV() 不同。 |
| date | 表达式或字段包含与在 pmt 中指定的现金流支付对应的日期时间表。 第一个值用作计算未来现金流抵销的开始日期。 |
| TOTAL | 如果在函数参数前面出现单词 TOTAL，则计算给出当前选择项的所有可能值，而不只是属于当前维度值的那些值，即它会忽略图表维度。<br><br>通过使用 TOTAL [&lt;fld {.fld}&gt;]（其中 TOTAL 限定符后跟一个或多个字段名称作为图表维度变量的子集的列表），您可以创建总可能值的子集。<br><br>[定义聚合范围](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm) |

使用此功能时，以下限制适用：

* discount\_rate、pmt 和 date 不能包含聚合函数，除非这些内部聚合包含 TOTAL 或 ALL 限定符。 有关高级嵌套聚合函数的更多信息，请结合指定维度使用 Aggr 高级函数。

* 数据对任意部分或两部分中的文本值，NULL 值和缺失值在整个数据对中忽略不计。

## 适合使用 XNPV 的情况

* `XNPV()` 用于计算投资机会的净现值 (NPV)。

* 由于其较高的精度，XNPV 比 NPV 更适合所有类型的金融模型。

## 区域设置

除非另有规定，本主题中的示例使用以下日期格式：MM/DD/YYYY。日期格式已经在数据加载脚本中的 `SET DateFormat` 语句中指定。由于区域设置和其他因素，系统中的默认日期格式可能有所不同。您可以更改以下示例中的格式以满足您的要求。或者，您可以更改加载脚本中的格式以匹配这些示例。有关更多信息，请参阅[修改应用程序和脚本的区域设置](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm)。

应用程序中的默认区域设置基于用户配置文件。这些区域格式设置与 Qlik Cloud 用户界面中显示的语言无关。Qlik Cloud 将以与您使用的浏览器相同的语言显示。

如果你是应用程序创建者，你可以为自己创建的应用程序设置默认区域。有关更多信息，请参阅[设置 Qlik Cloud Analytics 中创建应用程序和脚本所用的首选区域设置](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting)。

## 示例

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FinancialAggregationFunctionsInCharts/xnpv.htm)

#### 加载脚本和图表表达式

概述

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

加载脚本包含：

* 包含现金流交易的数据集。

* 存储在名为 `Cashflow` 的表中的信息。

加载脚本

```
Cashflow:
LOAD 2013 as Year, * inline [
Date|Payments
2013-01-01|-10000
2013-03-01|3000
2013-10-30|4200
2014-02-01|6800
] (delimiter is '|');
```

结果

执行以下操作：

加载数据并打开工作表。创建新表并添加以下计算作为度量：

`=XNPV(0.09, Payments, Date)`

结果表

| =XNPV(0.09, 付款, 日期) |
| --- |
| $3062.49 |

## 了解详情

* [NPV - 图表函数](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FinancialAggregationFunctionsInCharts/npv.htm)
* [Aggr - 图表函数](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/aggr.htm)