Please Note: This article is written for users of the following Microsoft Word versions: 2007 and 2010. If you are using an earlier version (Word 2003 or earlier), this tip may not work for you. For a version of this tip written specifically for earlier versions of Word, click here: Setting Table Values to Three Decimal Places.
Jacob has a table containing numeric values pulled from another program. One of the columns has numbers that might be 3.256000 in one cell and 23.200000 in another. He always needs to go through all of these numbers and make them only 3 digits to the right of the decimal point. Jacob wonders if there is a way to automatically step through all the values using a macro and make sure they have only three digits to the right of the decimal point.
This could certainly be done with a macro, but that might not be the best way to do it. The first potential solution is to look at how you are getting your original data. If it is possible, you might want to change the program that generates the data so that it uses only three decimal places. Or, change it so that the data ends up in an Excel worksheet that you can then embed within your Word document.
If that doesn't work, you might be able to modify the program so that it doesn't insert numeric values, but inserts fields that display the numeric values. This may sound confusing, but you can use fields to display only a specific number of digits of a value. This type of field formatting has been discussed in other WordTips.
If you cannot change the way that the original program generates the information that ends up in the table (and most of the time people can't change it), then you can use Find and Replace to limit your values to three decimal places. Follow these steps:
What these steps do is to look for any digit (0 through 9) followed by a decimal point and three digits. This is a "group" (one digit, decimal point, three digits) that must be immediately followed by at least one digit, and perhaps more. When this sequence is found, it is replaced by the first group (one digit, decimal point, three digits). The result is that everything beyond the third digit after the decimal point is chopped off.
This Find and Replace approach is quick and easy, and it doesn't involve the use of macros. It also doesn't round the information that is left in your document. If you need to have the values rounded to three digits instead of cut off at three digits, then you are best to go back to the "see if you can change the originating program" approach discussed at the beginning of this tip.
Note:
WordTips is your source for cost-effective Microsoft Word training. (Microsoft Word is the most popular word processing software in the world.) This tip (11467) applies to Microsoft Word 2007 and 2010. You can find a version of this tip for the older menu interface of Word here: Setting Table Values to Three Decimal Places.
Learning Made Easy! Quickly teach yourself how to format, publish, and share your content using Word 2013. With Step by Step, you set the pace, building and practicing the skills you need, just when you need them! Check out Microsoft Word 2013 Step by Step today!
Need a block of text to appear in a table? Word can do the conversion for you very quickly.
Discover MorePlacing information in your table is only half the battle. You also need to figure out the best ways to format that ...
Discover MoreWhen you print a table that includes borders, those borders should be crisp and clear on the printout. If you get some ...
Discover MoreFREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."
2021-12-23 08:34:26
sushi
thank you so much, you saved me like days of work
2020-09-11 05:11:54
jeewan atwal
Easiest way is to copy table content to MS excel. There you can change decimal places easily. After changing copy and paste table to MS word again!
2015-12-28 08:10:52
ken Endacott
The search and replace truncates the numbers whereas you most likely want the numbers to be rounded and displayed to a precision of three decimal places. Thus 3.2567 should be displayed as 3.257 and 3.2 should be displayed as 3.200 and .12 should be displayed as 0.120. At the same time the cells should have decimal tabs so that the numbers in the column align on the decimal point.
A following macro will round numbers in a column of a table, display to the desired precision and will set a decimal tab in each cell. To use, select a column starting cell which can be in the first row or the row following the heading rows. If desired set a decimal tab in the starting cell otherwise the macro will set decimal tabs in the centre of the cells. With the cursor in the starting cell run the macro.
The cells should contain a number and no other text.
The macro will not work if the table contains vertically combined cells. It will work if the table contains horizontally combined cells in the heading rows provided that the starting cell is in the row following the heading(s).
Sub RoundNumbersInColumn()
Dim rowMax As Long
Dim rowStart As Long
Dim colNo As Long
Dim aCell As Cell
Dim aTable As Table
Dim tabPos As Single
Dim k As Long
Dim aValue As Single
Dim formatStr As String
Dim s As String
' set format to number of decimal places to round to
formatStr = "#0.000"
If Selection.Information(wdWithInTable) = False Then
MsgBox "Cursor is not within Table", Title:=""
Exit Sub
End If
Set aTable = Selection.Tables(1)
rowMax = aTable.Rows.Count
Set aCell = Selection.Cells(1)
rowStart = aCell.RowIndex
colNo = aCell.ColumnIndex
tabPos = -1
If aCell.Range.ParagraphFormat.TabStops.Count > 0 Then
If aCell.Range.ParagraphFormat.TabStops.Item(1).Alignment = wdAlignTabDecimal Then _
tabPos = aCell.Range.ParagraphFormat.TabStops.Item(1).Position
End If
' if no decimal tab in starting cell then set to middle
If tabPos = -1 Then tabPos = aCell.Width / 2
For k = rowStart To rowMax
Set aCell = aTable.Cell(Row:=k, Column:=colNo)
s = aCell.Range.Text
s = Left(s, Len(s) - 1)
If IsNumeric(s) Then
aValue = Val(s)
With aCell.Range.ParagraphFormat.TabStops
.ClearAll
.Add Position:=tabPos, Alignment:=wdAlignTabDecimal
End With
aCell.Range.Text = Format(Str(aValue), formatStr)
End If
Next k
End Sub
2015-12-27 17:25:45
Zainab Al-Mulla
thannnnks a lot for the article, it worked like a magic
2012-06-13 10:22:21
Appreciative
This tip was very helpful. I'm lucky that I found this web page in a Google search since using Microsoft Help didn't give me a solution to reduce the number of decimal points. I wanted only one to the right of the decimal point, but obviously that just takes one small change to the example given.
THANKS AGAIN!
Got a version of Word that uses the ribbon interface (Word 2007 or later)? This site is for you! If you use an earlier version of Word, visit our WordTips site focusing on the menu interface.
Visit the WordTips channel on YouTube
FREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."
Copyright © 2024 Sharon Parq Associates, Inc.
Comments