How to get a formula field to total an entire table column, even if some cells in the column contain text or are blank
Article contributed by Dave Rado
The big problem with using the { =SUM(ABOVE) } field in Word (by selecting Table + Formula) to sum a table column, is that if there are any blank cells in the column, or any cells containing text, the formula only sums the cells below the first non-numeric cell it encounters. Another problem is that it can only total a maximum of 85 cells.
One workaround is to specify the row and column numbers in the formula; for
example, to sum rows 1-20 of the fourth column (column D), you could use {
=SUM(D1:D20) }. The big problem with that, though, is that such a formula
would need to be amended the moment you added or deleted any rows (and most
users wouldn't remember to amend it). And unfortunately, if you used {
=SUM(D:D) } to total column D, you'd get a circular reference (the
formula would include itself in the total). However, see:
I tried to use the
{ =SUM(ABOVE) } formula in a table but the answer was obviously incorrect
for more information regarding this workaround.
Another workaround is to use ToolsCalculate instead of using a formula.
The trick I use is to have the total row as a separate table, separated from the main one by a paragraph with its Font size set to 1 point, and “Hidden” (under Format + Font), and its line spacing set to “Multiple 0.1” (under Format + Paragraph).
Because of the 0.1 line spacing, the gap between the tables is not noticeable, even on-screen, and even when “ShowAll” is switched on; so arguably it isn't really vital that you set the font to Hidden; but without doing that, the gap may just be noticeable on high resolution printers.
Then use a bookmark in the SUM formula. It's a bit kludgy but it does work. One major benefit of this strategy (for things like Invoice and Quote templates) is that the user can subsequently add more rows to the main table simply by tabbing, and the formula will still work – which they couldn't otherwise do.
So supposing you've created two tables (the main table and the total row table) as follows:
Figure 1: This is actually two tables, separated by a 1 point, 0.1 line-spaced
paragraph.
As you can see, even with “ShowAll”
switched on, the gap is invisible.
Select the main table, select Insert + Bookmark, call the bookmark “Table1” and click Add. (If you had more tables of this sort you could bookmark the others with names such as “Table2”, “Table3”, etc).
Then in the total cell, press Ctrl+F9, and within the field braces {}, insert the following formula:
{ SUM(Table1 F:F) \# "#,##0.00;- #,##0.00;''" }
“Table1” in the formula refers to the name of the bookmark you've marked the main table with. The formula, being in a different table from the column it's totalling, wouldn't know which table you were referencing otherwise. The F:F bit means the 6th column from the left.
The bit at the end of the formula:
;''"
... means that if there are no values in column F, don't display anything (otherwise it would display 0.00). I learnt that trick from Word MVP Cindy Meister.
The “total” field will automatically update when you print, or go into Print Preview (provided you have “Update fields” switched on under Tools + Options + Print); and you can also update your fields at any time by Selecting All and pressing F9 (update fields) - which you could assign to a Toolbar button to make it more user-friendly.
If the user might need to insert more such tables in the same document, you could make it more user-friendly still by storing the basic table layout, as an AutoText entry; and then using a macro to insert the AutoText entry, assign a bookmark to the main table (bearing in mind that the bookmark name needs to be different each time, so can't be stored in the AutoText entry itself), and insert the formula (which could not be stored in the AutoText entry, for the same reason).
Formula Fields are covered in more detail in Word's Help.