Time Value of Money Tables
Time Value of Money Tables
Are you a student? Did you know that Amazon is offering 6 months of Amazon Prime - free two-day
shipping, free movies, and other benefits - to students?
Click here to learn more
Virtually every finance textbook has, at the back, a series of tables that contain multipliers that can
be used to easily calculate present or future values without the need for a financial calculator. In
recent years these tables have slowly given way to financial calculators, but they are still widely used
by some professors and on some professional exams.
This tutorial will demonstrate how to create these tables using Excel. The tables created here are
much better than the textbook tables because they overcome a couple of limitations:
Traditional tables only contain a few interest rate/number of period combinations. My tables allow
you the flexibility to show almost any number of combinations. This eliminates the need for
interpolation.
Traditional tables have limited accuracy because they typically only display the interest factors to
four decimal places. My tables can be reformatted to show up to 15 decimal places (not that you
want that many). Thus, they can be more accurate.
Traditional annuity tables (PVIFA and FVIFA) in most textbooks only work for regular annuities.
With my tables you can instantly change the table from regular annuities to annuities due with only
a single click.
As noted, these tables provide a great deal of flexibility. This flexibility is achieved using standard
Excel features such as time value of money functions, two-input data tables, data validation, and
conditional formatting.
You can download a complete copy of the Time Value of Money Interest Factors workbook.
The image below shows a snippet of a PVIF (Present Value Interest Factor) table:
In this case, the table provides a factor that is multiplied by a future value of a lump sum cash flow in
order to obtain its present value.
Imagine that you need to have $5,000 three years from now and can earn 4% per year in your
savings account. How much do you need to deposit today in order to achieve your goal?
To solve this problem, we simply multiply the future value ($5,000) by the appropriate PVIF table
value:
PV = FV x PVIF
So, look down the first column of the table for the 3 period row, and then across to the 4% column.
The PVIF is 0.8890 so the answer is:
Therefore, if you deposit $4,445 today in a saving account that pays 4% interest compounded
annually, then you will have $5,000 in three years.
But what happens if the interest rate is 3.5% instead of 3% or 4%? Then you have to interpolate
because 3.5% is not in the table. You can approximate the answer by averaging the PVIF table
values for 3% and 4% and using that average for the PVIF. The average is 0.90205 so you would
get an answer of $4,510.25. The correct answer, though, is $4,509.71 so your answer would be off
by about $0.54. Not too bad, but the tables that we create here can easily have the exact interest
rate that you need.
Note that the PV() function is only used in the upper-left corner of the table. The rest of the table is
filled in automatically when we use the Data Table command. It works by substituting the a value
from the top row and left column into the cells specified (F1 and F2). Excel does this repeatedly to fill
in the table. Table recalculation can be slow for large tables or complicated formulas, so one of
Excel's calculation options is to Automatic Except for Data Tables. We don't need to use that setting
here, but you should be aware that it exists.
Open a new workbook and then create a worksheet that looks like the one below:
In A10 enter the formula: =PV(F1,F2,0,-1). This is the formula that will drive our data table. The
0.9901 in the picture is simply the current result of the formula.
In C10 enter the formula: =B10+$B$2. This will "step up" the interest rate. Copy this formula
across to AE10 (that is 30 columns of interest rates).
In A12 enter the formula: =A11+$B$4. Copy this formula down through A70. This will "step up"
the period number by the number of units specified in B4.
Do not add the shading in row 10. We will do that with Conditional Formatting later on.
Before creating the data table, I should explain the data in E1:F2. This is the area (specifically, F1
and F2) where Excel will substitute the values from the top row and left column to get the numbers to
paste into the table. You can try it yourself: enter 4% into F1 and 3 into F2. Notice that the value in
A10 has changed to 0.8890. That is the same value that we used for the PVIF in the original
example problem above.
So, essentially what happens in the data table is that Excel will plug numbers into F1 and F2 and
then recalculate the formula in A10. The results will be placed into an array at the intersection of the
appropriate row and column. The Table() function will display that array in our table area
(B11:AE70).
To create the data table we need to select A10:AE70 and then go to the Data tab, click the What-If
Analysis button, and then choose Data Table. You will now see the following dialog box:
This is where you tell Excel that cell F1 is where to plug in the numbers from the top row of the table
(the interest rates) and that F2 is where to plug in the numbers from the left column (the period
numbers). Please note that the actual numbers in F1 and F2 do not matter at all because Excel is
going to replace them to create the table. Again, this is a two-input data table. You can also create a
one-input data table by specifying only the row or column input cell, but that wouldn't suit the
purpose here. Your worksheet should now look like the one below, except for the shading in row 10.
At this point the PVIF table is fully functional. If you change the value in B1, for example, then the
interest rates in the table will change, and the interest factors will be recalculated as well. However,
we need to clean this up a bit to make it more functional.
Also, we don't need to see the number in A10. In fact, it just confuses things. So, we will apply a
custom format to display the text "Period" instead of the result of the formula. Note that this does not
change the formula or the result, only what appears in the cell.
To set the custom number format, select A10 and then right click and choose Format Cells. Go to
the Number tab and choose the Custom category. In the Type edit box, enter "Period" (include the
quotation marks). This tells Excel to display the word "Period" regardless of the result of the formula.
Click the OK button to apply the custom number format. Note that if you look at the formula bar you
will see that the formula is still there. Only the formatting of the result has been changed.
Let's set one more custom number format, this time in A11:A70. We want the period numbers to
have two decimal places and to be roughly centered in column A. The format mask to do that is
0.00_______). Note that the underscores add spaces to the number format, and that the right paren
at the end is required.
The first rule will create the shading and borders for the top row of our table. Select A10:AE10 and
then call up the dialog box above. We only want to apply the format to the cells if they are in the
"visible" part of the table (that is, the column is within the range specified by the number of columns
in B6). So, the rule will be:
=Column()<=($B$6+1)
We need to add 1 to the number of columns because we are including column A, which is not a part
of the 30 columns specified. Apply a format by clicking the Format button and apply some borders,
background shading, and a bold font. Click OK to apply the formatting rule. To test it, change B6 to,
say, 10 and make sure that only A10:K10 have this format. If you change B6 to 15, then A10:P10
should have the format.
For the second rule we want to apply a border to the right edge of column A, but only those rows that
are supposed to be visible in the table. Select A10:A70 and then create this formatting rule:
=AND(COLUMN()=1,ROW()-10<=$B$5)
This rule checks to see that it is in column A and that the row number is in the visible range. Apply a
format with a border on the right edge only, and set the font to bold.
The third rule will hide everything outside of the visible part of the table as defined by the values in
B5:B6. Select the entire table (A10:AE70) and then use this rule:
=OR(COLUMN()-1>$B$6,ROW()-10>$B$5)
In the format, set the font color to white. That will preserve the data, but it will be invisible because
the font color is the same as the background color.
The fourth, and final, rule will underline the last visible row, but only in visible columns. The rule is:
=AND(ROW()-10=$B$5,COLUMN()<=$B$6+1)
Apply a border to the bottom using the Format button. Note that if some of your rules don't work
properly, you can always go back and edit them by choosing Manage Rules from the Conditional
Formatting drop-down.
Select B1 and then click the Data Validation button on the Data tab. This will launch the following
dialog box:
For the interest rate we want to allow any decimal number between 0 and 0.99 (0% to 99%), though
you may want to set a lower maximum. Choose Decimal from the Allow list, between from the Data
list, set the minimum to 0, and the maximum to 0.99. If you choose, you can set an input message
that will popup when the cell is selected, and an error message that is displayed if the user enters a
number outside of the allowable range.
That completes the PVIF table. The others are almost done as well!
Start by adding some data in row 7. In A7 enter "Type" (for the type of annuity). In B7 we will enter
another data validation rule. Click B7 and then the Data Validation button. This time we want to set
the Allow to List and then the Souce to "Regular, Due" (do not type the quotes, but do include the
comma). This will provide the user with a drop-down list from which they can choose the type of
annuity.
For the text in A9 we need to specify slightly different text depending on the type of annuity. We will
use the following IF() statement:
Finally, in A10 we will use the PV() function again, but this time we will set FV to 0 and PMT to 1.
Additionally, we need to specify the Type argument to the function. For regular annuities this
argument is 0, but for annuities due it is 1. The formula in A10 is:
=IF(B7="Due",PV(F1,F2,-1,0,1),PV(F1,F2,-1,0,0))
=IF(B7="Due",FV(F1,F2,-1,0,1),FV(F1,F2,-1,0,0))
Note that we still need slightly different formulas, depending on the type of annuity as described
above. Your FVIFA table should look like the one below:
For reference, if you change B7 to an annuity due you should get 1.0100 in B11 and 2.0301 in B12.
You can download a complete copy of the Time Value of Money Interest Factors workbook.
Virtually every finance textbook has, at the back, a series of tables that contain multipliers that can
be used to easily calculate present or future values without the need for a financial calculator. In
recent years these tables have slowly given way to financial calculators, but they are still widely used
by some professors and on some professional exams.
This tutorial will demonstrate how to create these tables using Excel. The tables created here are
much better than the textbook tables because they overcome a couple of limitations:
Traditional tables only contain a few interest rate/number of period combinations. My tables allow
you the flexibility to show almost any number of combinations. This eliminates the need for
interpolation.
Traditional tables have limited accuracy because they typically only display the interest factors to
four decimal places. My tables can be reformatted to show up to 15 decimal places (not that you
want that many). Thus, they can be more accurate.
Traditional annuity tables (PVIFA and FVIFA) in most textbooks only work for regular annuities.
With my tables you can instantly change the table from regular annuities to annuities due with only
a single click.
As noted, these tables provide a great deal of flexibility. This flexibility is achieved using standard
Excel features such as time value of money functions, two-input data tables, data validation, and
conditional formatting.
You can download a complete copy of the Time Value of Money Interest Factors workbook.
The image below shows a snippet of a PVIF (Present Value Interest Factor) table:
In this case, the table provides a factor that is multiplied by a future value of a lump sum cash flow in
order to obtain its present value.
Imagine that you need to have $5,000 three years from now and can earn 4% per year in your
savings account. How much do you need to deposit today in order to achieve your goal?
To solve this problem, we simply multiply the future value ($5,000) by the appropriate PVIF table
value:
PV = FV x PVIF
So, look down the first column of the table for the 3 period row, and then across to the 4% column.
The PVIF is 0.8890 so the answer is:
Therefore, if you deposit $4,445 today in a saving account that pays 4% interest compounded
annually, then you will have $5,000 in three years.
But what happens if the interest rate is 3.5% instead of 3% or 4%? Then you have to interpolate
because 3.5% is not in the table. You can approximate the answer by averaging the PVIF table
values for 3% and 4% and using that average for the PVIF. The average is 0.90205 so you would
get an answer of $4,510.25. The correct answer, though, is $4,509.71 so your answer would be off
by about $0.54. Not too bad, but the tables that we create here can easily have the exact interest
rate that you need.
Note that the PV() function is only used in the upper-left corner of the table. The rest of the table is
filled in automatically when we use the Data Table command. It works by substituting the a value
from the top row and left column into the cells specified (F1 and F2). Excel does this repeatedly to fill
in the table. Table recalculation can be slow for large tables or complicated formulas, so one of
Excel's calculation options is to Automatic Except for Data Tables. We don't need to use that setting
here, but you should be aware that it exists.
Open a new workbook and then create a worksheet that looks like the one below:
In A10 enter the formula: =PV(F1,F2,0,-1). This is the formula that will drive our data table. The
0.9901 in the picture is simply the current result of the formula.
In C10 enter the formula: =B10+$B$2. This will "step up" the interest rate. Copy this formula
across to AE10 (that is 30 columns of interest rates).
In A12 enter the formula: =A11+$B$4. Copy this formula down through A70. This will "step up"
the period number by the number of units specified in B4.
Do not add the shading in row 10. We will do that with Conditional Formatting later on.
Before creating the data table, I should explain the data in E1:F2. This is the area (specifically, F1
and F2) where Excel will substitute the values from the top row and left column to get the numbers to
paste into the table. You can try it yourself: enter 4% into F1 and 3 into F2. Notice that the value in
A10 has changed to 0.8890. That is the same value that we used for the PVIF in the original
example problem above.
So, essentially what happens in the data table is that Excel will plug numbers into F1 and F2 and
then recalculate the formula in A10. The results will be placed into an array at the intersection of the
appropriate row and column. The Table() function will display that array in our table area
(B11:AE70).
To create the data table we need to select A10:AE70 and then go to the Data tab, click the What-If
Analysis button, and then choose Data Table. You will now see the following dialog box:
This is where you tell Excel that cell F1 is where to plug in the numbers from the top row of the table
(the interest rates) and that F2 is where to plug in the numbers from the left column (the period
numbers). Please note that the actual numbers in F1 and F2 do not matter at all because Excel is
going to replace them to create the table. Again, this is a two-input data table. You can also create a
one-input data table by specifying only the row or column input cell, but that wouldn't suit the
purpose here. Your worksheet should now look like the one below, except for the shading in row 10.
At this point the PVIF table is fully functional. If you change the value in B1, for example, then the
interest rates in the table will change, and the interest factors will be recalculated as well. However,
we need to clean this up a bit to make it more functional.
Also, we don't need to see the number in A10. In fact, it just confuses things. So, we will apply a
custom format to display the text "Period" instead of the result of the formula. Note that this does not
change the formula or the result, only what appears in the cell.
To set the custom number format, select A10 and then right click and choose Format Cells. Go to
the Number tab and choose the Custom category. In the Type edit box, enter "Period" (include the
quotation marks). This tells Excel to display the word "Period" regardless of the result of the formula.
Click the OK button to apply the custom number format. Note that if you look at the formula bar you
will see that the formula is still there. Only the formatting of the result has been changed.
Let's set one more custom number format, this time in A11:A70. We want the period numbers to
have two decimal places and to be roughly centered in column A. The format mask to do that is
0.00_______). Note that the underscores add spaces to the number format, and that the right paren
at the end is required.
The first rule will create the shading and borders for the top row of our table. Select A10:AE10 and
then call up the dialog box above. We only want to apply the format to the cells if they are in the
"visible" part of the table (that is, the column is within the range specified by the number of columns
in B6). So, the rule will be:
=Column()<=($B$6+1)
We need to add 1 to the number of columns because we are including column A, which is not a part
of the 30 columns specified. Apply a format by clicking the Format button and apply some borders,
background shading, and a bold font. Click OK to apply the formatting rule. To test it, change B6 to,
say, 10 and make sure that only A10:K10 have this format. If you change B6 to 15, then A10:P10
should have the format.
For the second rule we want to apply a border to the right edge of column A, but only those rows that
are supposed to be visible in the table. Select A10:A70 and then create this formatting rule:
=AND(COLUMN()=1,ROW()-10<=$B$5)
This rule checks to see that it is in column A and that the row number is in the visible range. Apply a
format with a border on the right edge only, and set the font to bold.
The third rule will hide everything outside of the visible part of the table as defined by the values in
B5:B6. Select the entire table (A10:AE70) and then use this rule:
=OR(COLUMN()-1>$B$6,ROW()-10>$B$5)
In the format, set the font color to white. That will preserve the data, but it will be invisible because
the font color is the same as the background color.
The fourth, and final, rule will underline the last visible row, but only in visible columns. The rule is:
=AND(ROW()-10=$B$5,COLUMN()<=$B$6+1)
Apply a border to the bottom using the Format button. Note that if some of your rules don't work
properly, you can always go back and edit them by choosing Manage Rules from the Conditional
Formatting drop-down.
Select B1 and then click the Data Validation button on the Data tab. This will launch the following
dialog box:
For the interest rate we want to allow any decimal number between 0 and 0.99 (0% to 99%), though
you may want to set a lower maximum. Choose Decimal from the Allow list, between from the Data
list, set the minimum to 0, and the maximum to 0.99. If you choose, you can set an input message
that will popup when the cell is selected, and an error message that is displayed if the user enters a
number outside of the allowable range.
That completes the PVIF table. The others are almost done as well!
Start by adding some data in row 7. In A7 enter "Type" (for the type of annuity). In B7 we will enter
another data validation rule. Click B7 and then the Data Validation button. This time we want to set
the Allow to List and then the Souce to "Regular, Due" (do not type the quotes, but do include the
comma). This will provide the user with a drop-down list from which they can choose the type of
annuity.
For the text in A9 we need to specify slightly different text depending on the type of annuity. We will
use the following IF() statement:
Finally, in A10 we will use the PV() function again, but this time we will set FV to 0 and PMT to 1.
Additionally, we need to specify the Type argument to the function. For regular annuities this
argument is 0, but for annuities due it is 1. The formula in A10 is:
=IF(B7="Due",PV(F1,F2,-1,0,1),PV(F1,F2,-1,0,0))
=IF(B7="Due",FV(F1,F2,-1,0,1),FV(F1,F2,-1,0,0))
Note that we still need slightly different formulas, depending on the type of annuity as described
above. Your FVIFA table should look like the one below:
For reference, if you change B7 to an annuity due you should get 1.0100 in B11 and 2.0301 in B12.
You can download a complete copy of the Time Value of Money Interest Factors workbook.