# NPV - Skriptfunktion

Die Skriptfunktion NPV() nimmt einen Diskontsatz und mehrere Werte, sortiert nach Zeitraum. Eingänge (Einnahmen) sind positive Werte, Ausgänge (zukünftige Zahlungen) sind negative Werte für diese Berechnungen. Sie finden am Ende jedes Zeitraums statt.

Der Nettobarwert (Net Present Value, NPV) dient zum Berechnen des aktuellen Gesamtwerts von zukünftigen Geldflüssen. Zur Berechnung des NPV müssen die zukünftigen Geldflüsse für jeden Zeitraum geschätzt und die korrekte Diskontierungsrate bestimmt werden. Die Skriptfunktion NPV() enthält eine Diskontierungsrate und mehrere Werte, sortiert nach Zeitraum. Eingehende Geldflüsse (Einnahmen) sind positive Werte, ausgehende Geldflüsse (zukünftige Zahlungen) sind negative Werte für diese Berechnungen. Sie finden am Ende jedes Zeitraums statt.

Syntax:

NPV(discount\_rate, value)

Rückgabe Datentyp: numerisch. Standardmäßig wird das Ergebnis als Währung formatiert.

Der Nettobarwert wird mit folgender Formel berechnet:

![Formel zum Berechnen des NPV.](https://help.qlik.com/de-DE/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-npv-formula.png)

Dabei gilt:

* `R``t`= eingehende und ausgehende Nettogeldflüsse während eines einzelnen Zeitraums `t`

* `i` = Diskontierungsrate oder Rendite, die in alternativen Anlagen verdient werden könnte

* `t` = Anzahl der Zeiträume

Argumente

| Argument | Beschreibung |
| --- | --- |
| discount\_rate | discount\_rate ist der Prozentsatz des angewendeten Rabatts.<br><br>Ein Wert von 0,1 gibt eine Diskontierungsrate von 10 % an. |
| value | Dieses Feld enthält Werte für mehrere Zeiträume, nach Zeitraum sortiert. Der erste Wert steht für den Geldfluss am Ende von Zeitraum 1, usw. |

Beschränkungen:

Die Funktion `NPV()` weist die folgenden Beschränkungen auf:

* Textwerte, NULL-Werte und fehlende Werte werden ignoriert.

* Geldflusswerte müssen in aufsteigender Zeitraumreihenfolge sortiert sein.

## Verwendung

`NPV()` ist einen Finanzfunktion und dient zum Prüfen der Projektrentabilität und zum Ableiten anderer Kennzahlen. Die Funktion ist nützlich, wenn Geldflüsse als Rohdaten vorliegen.

## Regionaleinstellungen

Sofern nicht anders angegeben, verwenden die Beispiele in diesem Thema das folgende Datumsformat: MM/TT/JJJJ. Das Datumsformat wird in der Anweisung `SET DateFormat` in Ihrem Datenladeskript angegeben. Das Standarddatumsformat in Ihrem System kann aufgrund Ihrer regionalen Einstellungen und anderer Faktoren abweichen. Sie können die Formate in den Beispielen unten Ihren Anforderungen entsprechend ändern. Sie können auch die Formate in Ihrem Ladeskript entsprechend den Beispielen ändern.

Die standardmäßigen regionalen Einstellungen in Apps basieren auf den regionalen Systemeinstellungen der Computer oder Server, auf denen Qlik Sense installiert ist. Wenn der Qlik Sense-Server, auf den Sie zugreifen, auf Schweden festgelegt ist, verwendet der Dateneditor die schwedischen regionalen Einstellungen für Datums-, Uhrzeit- und Währungsangaben. Diese Einstellungen im regionalen Format hängen nicht mit der Sprache zusammen, die in der Benutzeroberfläche von Qlik Sense angezeigt wird. Qlik Sense wird in der gleichen Sprache wie der von Ihnen verwendete Browser angezeigt.

## Beispiel 1 – Einmalige Zahlung (Skript)

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

#### Ladeskript und Ergebnisse

Übersicht

Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.

Das Ladeskript umfasst:

* Ein Datensatz für ein Projekt und dessen Geldfluss für einen Zeitraum wird in eine Tabelle namens `CashFlow` geladen.

* Ein Resident Load aus der Tabelle `CashFlow` wird verwendet, um das NPV-Feld für das Projekt in der Tabelle `NPV` zu berechnen.

* Eine feste Diskontierungsrate von 10 % wird in der NPV-Berechnung verwendet.

* Ein `Group By`-Befehl wird zum Gruppieren aller Zahlungen für das Projekt verwendet.

Ladeskript

```
CashFlow:
Load
*
Inline 
[	
PrjId,PeriodId,Values
1,1,1000
];

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

Ergebnisse

Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:

* `PrjId`

* `NPV`

Ergebnistabelle

| PrjId | NPV |
| --- | --- |
| 1 | $909.09 |

Für eine einmalige Zahlung von $1000, die am Ende eines Zeitraums erhalten werden soll, und mit einer Diskontierungsrate von 10 % pro Zeitraum entspricht der NPV $1000 geteilt durch (1 + Diskontierungsrate). Der effektive NPV entspricht $909,09

## Beispiel 2 – Mehrere Zahlungen (Skript)

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

#### Ladeskript und Ergebnisse

Übersicht

Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.

Das Ladeskript umfasst:

* Ein Datensatz für ein Projekt und dessen Geldflüsse für mehrere Zeiträume wird in eine Tabelle namens `CashFlow` geladen.

* Ein Resident Load aus der Tabelle `CashFlow` wird verwendet, um das NPV-Feld für das Projekt in der Tabelle `NPV` zu berechnen.

* Eine feste Diskontierungsrate von 10 % (0,1) wird in der NPV-Berechnung verwendet.

* Ein `Group By`-Befehl wird zum Gruppieren aller Zahlungen für das Projekt verwendet.

Ladeskript

```
CashFlow:
Load
*
Inline 
[	
PrjId,PeriodId,Values
1,1,1000
1,2,1000
];

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

Ergebnisse

Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:

* `PrjId`

* `NPV`

Ergebnistabelle

| PrjId | NPV |
| --- | --- |
| 1 | $1735.54 |

Für Zahlungen von $1000, die am Ende von zwei Zeiträumen erhalten werden sollen, und mit einer Diskontierungsrate von 10 % pro Zeitraum entspricht der NPV $1735,54.

## Beispiel 3 – Mehrere Zahlungen (Skript)

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

#### Ladeskript und Ergebnisse

Übersicht

Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.

Das Ladeskript umfasst:

* Diskontierungsraten für zwei Projekte werden in eine Tabelle namens `Project` geladen.

* Cashflows für mehrere Zeiträume für jedes Projekt nach Projekt-ID und Zeitraum-ID. Diese Zeitraum-ID kann zum Sortieren der Datensätze verwendet werden, wenn die Daten nicht sortiert sind.

* Die Kombination aus `NoConcatenate`, Resident Loads und der Funktion `Left Join` dient zum Erstellen einer temporären Tabelle, `tmpNPV`. Die Tabelle kombiniert die Datensätze der Tabellen `Project` und `CashFlow` in einer flachen Tabelle. In dieser Tabelle werden Diskontierungsraten für jeden Zeitraum wiederholt.

* Ein Resident Load aus der Tabelle `tmpNPV` wird verwendet, um das NPV-Feld für jedes Projekt in der Tabelle `NPV` zu berechnen.

* Die Diskontierungsrate mit einem Wert ist jedem Projekt zugeordnet. Sie wird mit der Funktion `only()` abgerufen und in der NPV-Berechnung für jedes Projekt verwendet.

* Ein `Group By`-Befehl wird zum Gruppieren aller Zahlungen für jedes Projekt nach Projekt-ID verwendet.

Um zu verhindern, dass synthetische oder redundante Daten in das Datenmodell geladen werden, wird die Tabelle `tmpNPV` am Ende des Skripts verworfen.

Ladeskript

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

CashFlow:
Load
*
Inline 
[	
PrjId,PeriodId,Values
1,1,1000
1,2,1000
1,3,1000
2,1,500
2,2,500
2,3,1000
2,4,1000
];

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

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

Drop table tmpNPV;
```

Ergebnisse

Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:

* `PrjId`

* `NPV`

Ergebnistabelle

| PrjId | NPV |
| --- | --- |
| 1 | $2486.85 |
| 2 | $2042.12 |

Für Projekt-ID 1 werden Zahlungen von $1000 am Ende von drei Zeiträumen mit einer Diskontierungsrate von 10 % pro Zeitraum erwartet. Daher entspricht der effektive NPV $2486,85.

Für Projekt-ID 2 werden zwei Zahlungen von $500 und zwei weitere Zahlungen von $1000 über vier Zeiträume hinweg mit einer Diskontierungsrate von 15 % erwartet. Daher entspricht der effektive NPV $2042,12.

## Beispiel 4 – Beispiel für Projektrentabilität (Skript)

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

#### Ladeskript und Ergebnisse

Übersicht

Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.

Das Ladeskript umfasst:

* Diskontierungsraten und anfängliche Investitionen (Zeitraum 0) für zwei Projekte werden in eine Tabelle namens Project geladen.

* Cashflows für mehrere Zeiträume für jedes Projekt nach Projekt-ID und Zeitraum-ID. Diese Zeitraum-ID kann zum Sortieren der Datensätze verwendet werden, wenn die Daten nicht sortiert sind.

* Die Kombination aus NoConcatenate, Resident Loads und der Funktion Left Join dient zum Erstellen einer temporären Tabelle, tmpNPV. Die Tabelle kombiniert die Datensätze der Tabellen Project und CashFlow in einer flachen Tabelle. In dieser Tabelle werden Diskontierungsraten für jeden Zeitraum wiederholt.

* Die Diskontierungsrate mit einem Wert, die jedem Projekt zugewiesen ist, wird anhand der Funktion only() abgerufen und in der NPV-Berechnung für jedes Projekt verwendet.

* Ein Resident Load aus der Tabelle tmpNPV wird verwendet, um das NPV-Feld für jedes Projekt in einer Tabelle NPV zu berechnen.

* Ein weiteres Feld, das den NPV durch die anfängliche Investition für jedes Projekt teilt, wird erstellt, um den Projektrentabilitätsindex zu berechnen.

* Ein Group By-Befehl gruppiert nach Projekt-ID und wird zum Gruppieren aller Zahlungen für jedes Projekt verwendet.

Um zu verhindern, dass synthetische oder redundante Daten in das Datenmodell geladen werden, wird die Tabelle tmpNPV am Ende des Skripts verworfen.

Ladeskript

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

CashFlow:
Load
*
Inline 
[	
PrjId,PeriodId,Values,
1,1,35000
1,2,35000
1,3,35000
2,1,30000
2,2,40000
2,3,50000
2,4,60000
];

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

NPV:
Load
        PrjId,
        NPV(Only(Discount_Rate),Values) as NPV, //Discount Rate will be 10% for Project 1 and 15% for Project 2
    NPV(Only(Discount_Rate),Values)/ Only(Initial_Investment) as Profitability_Index
Resident tmpNPV
Group By PrjId;

Drop table tmpNPV;
```

Ergebnisse

Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:

* PrjId

* NPV

Erstellen Sie die folgende Kennzahl:

=only(Profitability\_Index)

Ergebnistabelle

| PrjId | NPV | =only(Profitability\_Index) |
| --- | --- | --- |
| 1 | $87039.82 | 0.87 |
| 2 | $123513.71 | 1.24 |

Projekt-ID 1 hat einen effektiven NPV von $87039.82 und eine anfängliche Investition von $100000. Daher entspricht der Rentabilitätsindex 0,87. Da dieser Wert kleiner als 1 ist, ist das Projekt nicht rentabel.

Projekt-ID 2 hat einen effektiven NPV von $123513,71 und eine anfängliche Investition von $100000. Daher entspricht der Rentabilitätsindex 1,24. Da dieser Wert größer als 1 ist, ist das Projekt rentabel.

## Weitere Informationen

* [Drop table](https://help.qlik.com/de-DE/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/drop-table.htm)

* [group by](https://help.qlik.com/de-DE/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Load.htm#group_by)

* [Join](https://help.qlik.com/de-DE/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

* [Max - Skriptfunktion](https://help.qlik.com/de-DE/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/AggregationFunctions/max.htm)

* [NoConcatenate](https://help.qlik.com/de-DE/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/NoConcatenate.htm)

* [NPV – Diagrammfunktion](https://help.qlik.com/de-DE/sense/November2024/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FinancialAggregationFunctionsInCharts/npv.htm)

* [Only - Skriptfunktion](https://help.qlik.com/de-DE/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/AggregationFunctions/only.htm)

* [Resident LOAD](https://help.qlik.com/de-DE/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/load-data-from-previously-loaded-table.htm#Resident)