This is an old Access trick I learned a very long time ago, and it makes use of the way Access handles fractional, negative numbers. Try this:

-Int(-[DecimalValue])

It's odd, but it will always round your numbers up to the nearest whole number.

Answer from RLH on Stack Overflow
🌐
Microsoft Support
support.microsoft.com › en-us › office › round-function-921ce538-c9a6-41e2-be87-28e685b59935
Round Function - Microsoft Support
Syntax for the function that returns a number rounded to a specified number of decimal places in Access.
🌐
Allenbrowne
allenbrowne.com › round.html
Microsoft Access tips: Rounding numbers in Access
How to round numbers in Microsoft Access: to the nearest number, rounding up, rounding down, to the nearest 5 cents, rounding dates and times, bankers rounding, and handling floating point errors
Discussions

roundUp Function | Access World Forums
Hell All I am looking for a function to roundup currency. Exel has this function but Access does not. Rounds a number up, away from 0 (zero). Syntax ROUNDUP(number,num_digits) Number is any real number that you want rounded up. Num_digits is the number of digits to which you want to... More on access-programmers.co.uk
🌐 access-programmers.co.uk
March 8, 2017
excel - Rounding in MS Access - Stack Overflow
Whats the best way to round in VBA Access? My current method utilizes the Excel method Excel.WorksheetFunction.Round(... But I am looking for a means that does not rely on Excel. More on stackoverflow.com
🌐 stackoverflow.com
sql - How to ROUNDUP a number in Access 2013? - Stack Overflow
For Access 2013, I need a way to round up any fractional numbers to the next whole number in an SQL query. Example: SELECT ROUNDUP(NumberValues) FROM Table1 In the above query, a row with 1.25 s... More on stackoverflow.com
🌐 stackoverflow.com
Round UP to next integer in MS Access 2000 in a query?
Find answers to Round UP to next integer in MS Access 2000 in a query? from the expert community at Experts Exchange More on experts-exchange.com
🌐 experts-exchange.com
February 26, 2003
🌐
TechOnTheNet
techonthenet.com › access › functions › numeric › round.php
MS Access: Round Function
Round (12.55, 1) Result: 12.6 (rounds up) Round (12.65, 1) Result: 12.6 (rounds down) Round (12.75, 1) Result: 12.8 (rounds up) In these cases, the last digit after rounding is always an even number. So, be sure to only use the Round function if this is your desired result. The syntax for the Round function in MS Access is:
🌐
YouTube
youtube.com › watch
Microsoft Access Round a Number to the Nearest 10, 100, etc. (Rounding) - YouTube
In this Microsoft Access tutorial, I'm going to show you how to round any number to the nearest 10, 100, etc. You'll also see how to round up, down, and avoi...
Published   April 16, 2020
🌐
W3Schools
w3schools.com › sql › func_msaccess_round.asp
MS Access Round() Function
Note: If the expression ends with a 5, this function rounds so that the last digit is an even number. Here are some examples: Round(34.55, 1) - Result: 34.6 (rounds up) Round(34.65, 1) - Result: 34.6 (rounds down)
🌐
Access World
access-programmers.co.uk › home › forums › microsoft access discussion › modules & vba
roundUp Function | Access World Forums
March 8, 2017 - Hell All I am looking for a function to roundup currency. Exel has this function but Access does not. Rounds a number up, away from 0 (zero). Syntax ROUNDUP(number,num_digits) Number is any real number that you want rounded up. Num_digits is the number of digits to which you want to...
Top answer
1 of 13
26

Be careful, the VBA Round function uses Banker's rounding, where it rounds .5 to an even number, like so:

Round (12.55, 1) would return 12.6 (rounds up) 
Round (12.65, 1) would return 12.6 (rounds down) 
Round (12.75, 1) would return 12.8 (rounds up)   

Whereas the Excel Worksheet Function Round, always rounds .5 up.

I've done some tests and it looks like .5 up rounding (symmetric rounding) is also used by cell formatting, and also for Column Width rounding (when using the General Number format). The 'Precision as displayed' flag doesn't appear to do any rounding itself, it just uses the rounded result of the cell format.

I tried to implement the SymArith function from Microsoft in VBA for my rounding, but found that Fix has an error when you try to give it a number like 58.55; the function giving a result of 58.5 instead of 58.6. I then finally discovered that you can use the Excel Worksheet Round function, like so:

Application.Round(58.55, 1)

This will allow you to do normal rounding in VBA, though it may not be as quick as some custom function. I realize that this has come full circle from the question, but wanted to include it for completeness.

2 of 13
11

To expand a little on the accepted answer:

"The Round function performs round to even, which is different from round to larger."
--Microsoft

Format always rounds up.

  Debug.Print Round(19.955, 2)
  'Answer: 19.95

  Debug.Print Format(19.955, "#.00")
  'Answer: 19.96

ACC2000: Rounding Errors When You Use Floating-Point Numbers: http://support.microsoft.com/kb/210423

ACC2000: How to Round a Number Up or Down by a Desired Increment: http://support.microsoft.com/kb/209996

Round Function: http://msdn2.microsoft.com/en-us/library/se6f2zfx.aspx

How To Implement Custom Rounding Procedures: http://support.microsoft.com/kb/196652

Find elsewhere
🌐
YouTube
youtube.com › watch
Rounding Numbers in Microsoft Access. Understanding Int, Fix, Round, and Banker's Rounding - YouTube
In this video, I'm going to teach you all about rounding in Microsoft Access. We'll look at the Round, Int, and Fix functions and how they're different. We'l...
Published   May 19, 2022
🌐
Computer Learning Zone
599cd.com › blog › display-article.asp
Rounding Numbers in Microsoft Access - Computer Learning Zone
So, right down here, we're going to type in our colon. It's going to be round N, just like that. Let me zoom in so you can see it better: round N. Then run it. There you go. Each one of those numbers is rounded off to the nearest integer.
🌐
Experts Exchange
experts-exchange.com › questions › 20531182 › Round-UP-to-next-integer-in-MS-Access-2000-in-a-query.html
Solved: Round UP to next integer in MS Access 2000 in a query? | Experts Exchange
February 26, 2003 - Okay sorry for all the bad answers. Here's your answer tested and working: SELECT CLng( number + .5) as Expr; This statement works in Access 2000 and will round up any number to the next whole number.
🌐
TechRepublic
techrepublic.com › home › topics › software › web development › rounding down in access take 2
Rounding Down In Access Take 2 - TechRepublic
September 10, 2003 - int() cuts off the decimal part. so int(x) leaves you with the whole part. int(99.999*100)/100 gives 99.99 should do the trick ... This is not very elegant but it works. Convert the number to a string and truncate like so: Function RoundDown(TheNum As Double, Decimals As Integer) As Double ...
🌐
GeeksforGeeks
geeksforgeeks.org › sql › rnd-and-round-function-in-ms-access
Rnd() and Round Function in MS Access - GeeksforGeeks
September 2, 2020 - Syntax : ... 2. Round() Function : Round() function returns rounds a number to a specified number of decimal places.In this function we will pass an expression and the second parameter will be decimal places till that the number will be rounded.
🌐
Tek-Tips
tek-tips.com › home › forums › software › programmers › languages › vba visual basic for applications (microsoft)
ROUNDING IN ACCESS | Tek-Tips
January 2, 2003 - (the number of zeros in the formula = the number of decimal places to round to). =cint([field_name]*100)/100 ... Try to make reference to excel's object Application.WorksheetFunction and will have asscss to many excel spreadsheet functions (other than VBA). For instance: (Make reference to ...
🌐
Tek-Tips
tek-tips.com › home › forums › software › programmers › dbms packages › microsoft: access modules (vba coding)
Rounding up to nearest whole number - Microsoft: Access Modules (VBA Coding) | Tek-Tips
October 20, 2003 - You should probably use an expression like this = -1 * Int(-1 * [Number]) If your value is a whole number and you use Int(number) +1 then you round up a value that you should not be rounding (i.e.
🌐
Access World
access-programmers.co.uk › home › forums › microsoft access discussion › queries
Functions: Round, Int, Fix, Floor Ceiling across Excel, MSAccess, MSSQL TSQL | Access World Forums
February 27, 2015 - Eg Excel rounds down -2.5 to -2.0. The INT() function moves positive numbers towards zero, and negative numbers away from zero, as it rounds a number to the nearest whole-number (integer) equivalent. You use the FIXED() function to return a number as text. In making the conversion the function ...
🌐
TutorialsArena
tutorialsarena.com › database › sql › func-msaccess-round
MS Access Round() Function
August 10, 2024 - Round() is used to reduce the precision of a number by rounding it to a certain number of decimal places. If the digit immediately after the rounding position is 5, and that's the end of the number, then Round() rounds to the nearest *even* number.
🌐
Access World
access-programmers.co.uk › home › forums › microsoft access discussion › queries
Rounding to nearest whole number | Access World Forums
December 11, 2002 - This function will round to various factors of 10. Specify 3 for 1000, 2 for 100 etc. Note: If you are rounding to nearest 1000, then 500 will always be rounded up.