# XNPV Skriptfunktion

XNPV() returnerar det aggregerade aktuella nettovärdet för en tablå av kassaflöden (som inte nödvändigtvis är periodisk), representerade av parvisa tal i pmt och date. Alla betalningar diskonteras utifrån ett 365-dagarsår.

Syntax:

XNPV(discount\_rate, pmt, date)

Returnerad datatyp: numeriska

Anteckning om informationSom standard formateras resultatet som valuta.

Formeln för att beräkna XNPV visas nedan:

XNPV-aggregeringsformel

XNPV-aggregeringsformel

XNPV-aggregeringsformel ![Bild på formel för XNPV-skriptfunktion.](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-xnpv-formula.png)

där:

* `P``i`= nettokassainflöden och -utflöden under en enstaka period `i`

* `d``1`= det första betalningsdatumet

* `d``i` = det `i`^:e^ betalningsdatumet

* `rate` = rabattsats

Det aktuella nettovärdet, eller NPV (Net Present Value), används för att beräkna det aktuella totala värdet för en framtida ström av kassaflöden baserat på en räntesats. För att beräkna XNPV måste vi uppskatta framtida kassaflöden med motsvarande datum. Därefter tillämpar vi för varje betalning den effektiva diskonteringsräntan baserat på betalningsdatumet.

Att utföra XNPV-aggregeringen över en serie betalningar liknar att utföra en summaaggregering över dessa betalningar. Skillnaden är att varje belopp ändras (eller "diskonteras") beroende på vald diskonteringsränta (liknande räntesats) och hur långt in i framtiden betalningen ligger. Om XNPV utförs med parametern discount\_rate satt till noll kommer XNPV att vara likvärdigt med en summering (betalningarna kommer inte att ändras innan de summeras). I allmänhet gäller att ju närmare noll discount\_rate är satt, desto mer liknar XNPV-resultatet resultatet av en summaaggregering.

Argument

| Argument | Beskrivning |
| --- | --- |
| discount\_rate | discount\_rate är den årliga ränta som betalningarna ska diskonteras med.<br><br>Ett värde på 0,1 anger en rabattsats på 10 %. |
| pmt | Betalningar. Uttrycket eller fältet som innehåller de kassaflöden som motsvarar det betalningsschema som anges i date. Positiva värden antas vara inflöden och negativa värden antas vara utflöden.<br><br>Anteckning om informationXNPV() diskonterar inte det första kassaflödet eftersom det alltid kommer att inträffa på startdatumet. Efterföljande betalningar rabatteras utifrån ett 365-dagarsår. Detta skiljer sig från NPV(), där även den första betalningen diskonteras. |
| date | Uttrycket eller fältet som innehåller de datascheman som motsvarar kassaflödesbetalningar som ges i pmt. Det första värdet används som startdatum för att beräkna tidsförskjutningar för framtida kassaflöden. |

När du arbetar med den här funktionen gäller följande begränsningar:

* Textvärden, NULL-värden och saknade värden i någon eller båda delarna av ett datapar resulterar i att hela dataparet ignoreras.

## När ska du använda NPV

* `XNPV()` används vid finansiell modellering för beräkning av det aktuella nettovärdet (NPV) för en investeringsmöjlighet.

* På grund av sin högre precision är XNPV att föredra framför NPV för alla typer av finansiella modeller.

## Lokala inställningar

Om inget annat anges använder exemplen i detta ämne följande datumformat: MM/DD/YYYY. Datumformatet anges i `SET DateFormat`-satsen i datainläsningsskriptet. Förvald datumformatering kan vara annorlunda i ditt system, på grund av dina regionala inställningar och andra faktorer. Du kan ändra formaten i exemplen nedan så att det passar dina krav. Eller så kan du ändra formaten i ditt laddningsskript så att de matchar dessa exempel. Mer information finns i [Ändra regioninställningar för applikationer och skript](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm).

Standardinställningar för region i applikationer baseras på användarprofilen. Dessa regionala formatinställningar är inte relaterade till språket som visas i Qlik Cloud användargränssnittet. Qlik Cloud kommer att visas på samma språk som webbläsaren du använder.

Om du är en applikationsskapare kan du ange standardregionen för applikationer du skapar. Mer information finns i [Ställa in önskade regioninställningar för att skapa appar och skript i Qlik Cloud-analys](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting).

## Exempel 1 – enstaka betalning (skript)

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

#### Laddningsskript och resultat

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En datauppsättning med ett projekt och dess kassaflöde för ett år, i en tabell som heter `CashFlow`. Det initiala datumet för beräkningen är inställt till 1 juli 2022, med ett nettokassaflöde på 0. Efter ett år inträffar ett kassaflöde på 1000 USD.

* En resident load från `CashFlow`-tabellen, som används för att beräkna `XNPV`-fältet för projektet i en tabell som heter `XNPV`.

* En hårdkodad rabattsats på 10 % (0,1) används i XNPV-beräkningen.

* En `Group By`-sats används för att gruppera alla betalningar för projektet.

Laddningsskript

```
CashFlow:
Load
*
Inline 
[	
PrjId,Dates,Values
1,'07/01/2022',0
1,'07/01/2023',1000
];

XNPV:
Load 
	PrjId,
	XNPV(0.1,Values,Dates) as XNPV //Discount Rate of 10%
Resident CashFlow
Group By PrjId;
```

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* `PrjId`

* `XNPV`

Resultattabell

| PrjId | XNPV |
| --- | --- |
| 1 | $909.09 |

Enligt formeln är XNPV-värdet för den första posten 0, och för den andra posten är XNPV-värdet 909,09 USD. Totalt XNPV är 909,09 USD.

## Exempel 2 – flera betalningar (skript)

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

#### Laddningsskript och resultat

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En datauppsättning med ett projekt och dess kassaflöde för ett år, i en tabell som heter `CashFlow`.

* En resident load från `CashFlow`-tabellen, som används för att beräkna `XNPV`-fältet för projektet i en tabell som heter `XNPV`.

* En hårdkodad rabattsats på 10 % (0,1) används i XNPV-beräkningen.

* En `Group By`-sats används för att gruppera alla betalningar för projektet.

Laddningsskript

```
CashFlow:
Load
*
Inline 
[	
PrjId,Dates,Values
1,'07/01/2022',0
1,'07/01/2024',500
1,'07/01/2023',1000
];

XNPV:
Load 
	PrjId,
	XNPV(0.1,Values,Dates) as XNPV //Discount Rate of 10%
Resident CashFlow
Group By PrjId;
```

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* `PrjId`

* `XNPV`

Resultattabell

| PrjId | XNPV |
| --- | --- |
| 1 | $1322.21 |

I det här exemplet erhålls en betalning på 1000 USD på slutet av det första året och en betalning på 500 USD erhålls på slutet av andra året. Med en rabattsats på 10 % per period blir effektiv XNPV 1322,21 USD.

Observerar att endast den första raden med data ska hänvisa till basdatumet för beräkningar. För resten av raderna spelar ordningen ingen roll, eftersom datumparametern används för att beräkna den förbrukade tiden.

## Exempel 3 – flera betalningar och oregelbundna kassaflöden (skript)

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

#### Laddningsskript och resultat

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* Rabattsatser för två projekt som i en tabell som heter `Project`.

* Kassaflöden för flera perioder för varje projekt efter projekt-ID och datum. `Dates`-fältet används för att beräkna hur länge respektive rabattsatsen tillämpas för kassaflödet. Bortsett från från den första posten (initialt kassaflöde och datum) spelar posternas ordning ingen roll och om den ändras påverkas inte beräkningarna.

* Med en kombination av `NoConcatenate`, resident loads och `Left Join`-funktionen skapas en temporär tabell `tmpNPV` som kombinerar posterna i tabellerna `Project` och `CashFlow` till en platt tabell. Den här tabellen kommer att ha repeterade rabattsatser för varje kassaflöde.

* En resident load från `tmpNPV`-tabellen, som används för att beräkna `XNPV`-fältet för varje projekt i en tabell som heter `XNPV`.

* Den enstaka rabattsatsen som är kopplad till varje projekt hämtas med `only()`-funktionen och används i `XNPV`-beräkningen för varje projekt.

* En `Group By`-sats som grupperar efter projekt-ID används för att gruppera alla betalningar och motsvarande datum för varje projekt.

* För att undvika att syntetiska eller redundanta data laddas till datamodellen släpps `tmpXNPV`-tabellen på slutet av skriptet.

Laddningsskript

```
Project:
Load * inline [
PrjId,Discount_Rate
1,0.1
2,0.15
];

CashFlow:
Load
*
Inline 
[	
PrjId,Dates,Values
1,'07/01/2021',0
1,'07/01/2022',1000
1,'07/01/2023',1000
2,'07/01/2020',0
2,'07/01/2023',500
2,'07/01/2024',1000
2,'07/01/2022',500
];

tmpXNPV:
NoConcatenate Load *
Resident Project;
Left Join
Load * 
Resident CashFlow;

XNPV:
Load 
	PrjId,
	XNPV(Only(Discount_Rate),Values,Dates) as XNPV //Discount Rate will be 10% for Project 1 and 15% for Project 2
Resident tmpXNPV
Group By PrjId;

Drop table tmpXNPV;
```

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* `PrjId`

* `XNPV`

Resultattabell

| PrjId | XNPV |
| --- | --- |
| 1 | $1735.54 |
| 2 | $278.36 |

Projekt-ID har ett initialt kassaflöde på 0 USD den 1 juli 2021. Det finns två betalningar på 1000 USD som ska erhållas på slutet av två på varandra följande år, med en rabattsats på 10 % per period. Därför blir effektiv XNPV 1735.54 USD.

Projekt-ID 2 har ett initialt utflöde av 1000 USD (därför används minustecken) den 1 juli 2020. Efter två år förväntas en betalning på 500 USD. Efter två år förväntas ytterligare en betalning på 500 USD. Slutligen förväntas en betalning på 1000 USD den 1 juli 2024. Med rabattsatsen på 15 % blir effektiv XNPV 278,36 USD.

## Mer information

* [Drop table](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/drop-table.htm)
* [group by](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Load.htm#group_by)
* [Join](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)
* [Max Skriptfunktion](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/AggregationFunctions/max.htm)
* [NoConcatenate](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/NoConcatenate.htm)
* [NPV - diagramfunktion](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FinancialAggregationFunctionsInCharts/npv.htm)
* [Only Skriptfunktion](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/AggregationFunctions/only.htm)
* [Resident LOAD](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/load-data-from-previously-loaded-table.htm#Resident)