A Do-It-Yourself Automated Invoicing System

Even a CPA with little computer training can build one.

Key to Instructions
To help readers follow the instructions in this article, we use two different typefaces.
Boldface type is used to identify the names of icons, agendas and URLs.
Sans serif type indicates commands and instructions that users should type into the computer and the names of files.

ou don’t have to be a technology wizard to help your company or client take a major first step into the advanced computer age. For example, in less than an hour even a low-tech CPA can create an automated invoice and billing system to replace the slow and error-prone paper-based methods many of their small business clients use. Not only can such a system practically eliminate mistakes and speed bookkeeping and accounting tasks, but it also takes less than an hour of training to teach staff how to use it.

Follow along with me and I’ll show you how to set one up; all you need is a computer loaded with Excel and some rudimentary knowledge of that application.

To illustrate how it can be done, I’ve designed an Excel spreadsheet for a small garden shop that will generate invoices and perform routine accounting tasks.

Let’s begin by creating two Excel worksheets. Name one Customers and add data to columns with headings such as customer names, addresses, phone and fax numbers and any special selling terms offered them. It should resemble the format of exhibit 1 , below. If you wish, you can download an operational copy of the finished Excel file from www.aicpa.org/download/pubs/jofa/2004_04_rose-example.xls .

Exhibit 1

Now assign a number to each customer and sort the worksheet by those numbers. To perform a Sort , highlight everything except the column headings and then click on Data, Sort .

Name the other worksheet Products. It will store your product information: item number (or code), description and unit price. It should resemble exhibit 2 . Sort that list by item number, too.

Next we’ll create a basic invoice form, again in the same Excel file, that will eventually link to the Products and Customers worksheets. The invoice form doesn’t have to be a drab-looking conventional spreadsheet; Excel has very attractive typefaces, and you even can insert your company logo if you have it saved in electronic form. If you don’t and you have a scanner, scan it in. Or you can get it scanned at any office supply shop.

To access Excel’s graphics and all its typefaces, click on Insert , Picture and WordArt . Exhibit 3 is an example of the type of invoice you can quickly create with Excel.

Once you’ve finished the invoice design, insert the formulas that transform the spreadsheets to work as a database. We’ll be using Excel’s VLOOKUP functions. After we’re done, a clerk simply has to type into the invoice a customer number, the product codes of the customer’s purchases and their quantities. Once entered, VLOOKUP takes over—automatically filling in the necessary information about the customer and the order, as illustrated in exhibit 3 .

Exhibit 2

The VLOOKUP functions must be entered into every cell that relates to information about Customers and Products . To make it easier to visualize on the sample invoice, I’ve colored yellow the cells that will be entered by the store clerk. The VLOOKUP formulas automatically fill in the red and blue cells. The colors are for reference only and are not needed in your final product. Red cells contain VLOOKUP functions that retrieve data from the Customers sheet and blue cells contain functions that retrieve data from the Products sheet. The Date cell contains a TODAY function that automatically fills in the date of the sale.

Let’s begin with the red Customer Name cell (F12 in the sample worksheet). With the cursor in that cell, click on Insert, Function, Lookup & Reference, VLOOKUP and then on OK . That will bring up the VLOOKUP function arguments (exhibit 4 ) , which tell the software where to locate data.

The first argument is the Lookup_value , which refers to the cell that is used to look up information from other sheets. For the customer data, the Lookup_value for all VLOOKUP functions will refer to the cell where the customer number is entered into the invoice (the yellow F11 cell in the sample file).

Exhibit 3

For product data all Lookup_values will refer to the cells where product numbers are entered to the invoice (the yellow C25 and C26 cells in the sample file).

The Table_array refers to the location of the data the invoice will be seeking. For all VLOOKUP functions in the red customer-related cells, choose the range of data in the Customers sheet, excluding the headings (A4:L7 in the sample file).

For the Column_index_number , type the column number where the specific data field you need to retrieve is situated. For example, when you create a VLOOKUP function in the Customer Name cell, you would enter 2 for the column number, because the customer names are listed in the second column of the Customers sheet.

Finally, set the Range_lookup to FALSE , which forces the function to look for an exact match for the customer number in the Customers sheet. The completed VLOOKUP function for the Customer Name cell (F12) is presented in exhibit 5 .

The only portion of the VLOOKUP functions that changes for the various red customer information cells is the Column_index_number . That is, all of these VLOOKUP functions use the customer number entered by the clerk as the Lookup_value (F11) and all of the customer VLOOKUP functions look up data from the Customer sheet (A4:L7).

Exhibit 4
Exhibit 5

Now I’ll create VLOOKUP functions to locate products. The blue Description and Unit Price fields fill in automatically upon entry of an item number. The Lookup_value for each of these functions will be the cell where a product number is entered in the invoice (C25 and C26 in the sample file). Each product description and price cell will require a different Lookup_value because multiple product numbers can be entered on the invoice. The Table_array is the range of data from the prices table (A4:C13), and the Column_index_number again will correspond to the column that matches the data you wish to pull out of the prices table (that is, 2 for Description and 3 for Unit Price ). The total and subtotal fields simply have SUM formulas, and the total price field calculates unit price times quantity. Exhibit 6 presents the VLOOKUP formulas needed for each red and blue cell on the Invoice sheet.

After you’ve entered the functions, notice the cells that contain them are filled with a no-answer code— #N/A —before you input a customer or product number. That’s because the VLOOKUP function cannot operate until the Lookup_value cell contains data. To eliminate the clutter created by the #N/A text, you can nest the VLOOKUP functions inside IF functions. The IF functions tell Excel not to input anything into the customer or product information cells when the customer number or product number cells are blank. The IF function for the customer information cells looks like this:


In this example F11 is the cell where the customer number is entered, and the VLOOKUP function is retrieving information from the second column of the customer table. When F11 is blank, the cell where the VLOOKUP function is input also is blank. When F11 is not blank, the VLOOKUP function operates. Create similar nested IF functions for all of the VLOOKUP functions on your sheet by clicking on a cell where there is a VLOOKUP function. In the formula bar at the top of the sheet, edit the function as shown above. The VLOOKUP functions for product information also must be edited. The edited functions for product information will look like this:


In this function C26 is where a product number is entered. The cell used in the IF function should match the Lookup_value in each of the product VLOOKUP functions.

Exhibit 6
When you protect a sheet, all cells are locked by default and cannot be changed. As a result the Invoice sheet requires that some cells be unlocked prior to protection. You must unlock the cells where users input information (that is, the yellow cells for the customer number, product number, quantity sold and invoice number). Select each cell or range of cells, click on Format , Cells , the Protection tab and then clear the Locked check box. After unlocking the appropriate cells, protect the Invoice sheet and create a password.

That’s it. You’ve just created an automated invoice form. You can use the same procedures to create any type of automated forms (such as purchasing forms) and turn your Excel sheets into automated database tables.


TECH 2004: The AICPA Information Technology Conference
May 2–5, 2004
Venetian, Las Vegas

JACOB M. ROSE, PhD, is an assistant professor at Montana State University, Bozeman, and principal of Progression Consulting Group ( www.progressiongroup.com ). His e-mail address is jakerose@montana.edu .


Year-end tax planning and what’s new for 2016

Practitioners need to consider several tax planning opportunities to review with their clients before the end of the year. This report offers strategies for individuals and businesses, as well as recent federal tax law changes affecting this year’s tax returns.


News quiz: Retirement planning, tax practice, and fraud risk

Recent reports focused on a survey that gauges the worries about retirement among CPA financial planners’ clients, a suit that affects tax practitioners, and a guide that offers advice on fraud risk. See how much you know with this short quiz.


Bolster your data defenses

As you weather the dog days of summer, it’s a good time to make sure your cybersecurity structure can stand up to the heat of external and internal threats. Here are six steps to help shore up your systems.