## XIRR FunctionMath Financial Class

```Public Function XIRR( _
ByRef vAmtsAndDates() As Variant _
) As Variant```

### Calculate the Internal Rate Of Return For uneven cash flows. Similar to UnevenInternalRateOfReturn, but accepts the arguments differently.

Example: What is the internal rate of return on an investment where \$10,000 is invested on 4/1/1984, and \$50,675 is withdrawn on 4/1/1994? 17.608828%
```    Assuming
Dim Flow() As Variant
ReDim Flow(0 To 2, 0 To 2)
Flow(1, 1) = -10000#
Flow(2, 1) = #4/1/1984#
Flow(1, 2) = 50674#
Flow(2, 2) = #4/1/1994#
for example
XIRR(Flow()) = .17608828```
See the XIRRSample Subroutine for more examples of this Function.
```    UnevenInternalRateOfReturn Function
UnevenNetPresentValue Function
InternalRateOfReturn Function
ModifiedInternalRateOfReturn Function
NetPresentValue Function
XIRR Function (Microsoft Excel)```
vAmtsAndDates: Two dimensional array of Variant values representing a table of cash flows along with the corresponding transaction date. Within this array, each cash flow amount is stored in element vAmtsAndDates(1, X) and the corresponding transaction date is stored in element vAmtsAndDates(2, X) where X represents the number of the cash flow. X must be between 1 (one) and UBound(vAmtsAndDates, 2) (the upper bound of the second dimension of vAmtsAndDates). The array must contain at least one payment (a negative value) and at least one receipt (a positive value).
Initial Cash Flow: This function uses the earliest date within vAmtsAndDates as the day on which to start its calculations. Because of this, the cash flows need not be in chronological order within vAmtsAndDates.
Return value: The return value will be a percentage between -100% (as represented by -1) and MaxDouble (around 1E300). A rate of return of 17%, for example, would be returned as .17, for example.
Algorithm: Function uses successive approximation to calculate the Internal Rate of Return. It will return Null if it cannot calculate the result to an accuracy of 2.22044604925031E-16 (D1MACH(4)) within 256 tries. In practice, this seldom happens.
v2.0 BugFix: This function has been corrected to not overflow when calculating Internal Rates of Return over long periods of time. Also, changed this function to work correctly when the first cash flow is positive and subsequent cash flows are negative (basically, when the cash flows have the opposite signs of those in the example above). Also, added error detection and correction to this function so that it will never generate an error within your program.