Nhờ giúp công thức làm tròn số (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

a.nguoidensau

Thành viên hoạt động
Tham gia
12/4/12
Bài viết
138
Được thích
28
Xin chào mọi người, tôi có 1 dãy số cần làm tròn như trong File, nhưng tôi lại chưa biết cách, ai biết xin chỉ giúp tôi.
Xin chân thành cảm ơn.
 

File đính kèm

Lần chỉnh sửa cuối:
Xin chào mọi người, tôi có 1 dãy số cần làm tròn như trong File, nhưng tôi lại chưa biết cách, ai biết xin chỉ giúp tôi.
Xin chân thành cảm ơn.
Ai đặt ra cái quy tắc làm tròn ngộ vậy trời? Cùng là số 1.5 mà ở hàng 2 thì làm tròn thành 1, xuống hàng 10 thì làm tròn thành 2. Vậy thì biết đường nào mà xử?
Nếu số 1.5 ở hàng 2 được làm tròn thành 2 thì tôi dự đoán ra quy tắc thế này: Nếu phần nguyên là số lẻ thì làm tròn lên, ngược lại thì làm tròn xuống (đến đơn vị). Với quy tắc này thì công thức sẽ là:
Mã:
=IF(ISODD(A2),ROUNDUP(A2,0),ROUNDDOWN(A2,0))
Hoặc:
Mã:
=ROUNDUP(A2,0)-ISEVEN(A2)
 
Ai đặt ra cái quy tắc làm tròn ngộ vậy trời? Cùng là số 1.5 mà ở hàng 2 thì làm tròn thành 1, xuống hàng 10 thì làm tròn thành 2. Vậy thì biết đường nào mà xử?
Nếu số 1.5 ở hàng 2 được làm tròn thành 2 thì tôi dự đoán ra quy tắc thế này: Nếu phần nguyên là số lẻ thì làm tròn lên, ngược lại thì làm tròn xuống (đến đơn vị). Với quy tắc này thì công thức sẽ là:
Mã:
=IF(ISODD(A2),ROUNDUP(A2,0),ROUNDDOWN(A2,0))
Hoặc:
Mã:
=ROUNDUP(A2,0)-ISEVEN(A2)
Cảm ơn bạn đã quan tâm, việc làm tròn số đấy gọi là "chẵn lấy lẻ bỏ" không phải là do mình nghĩ ra, mà do quy định của ngành nghề mà.
Còn 2 công thức mà bạn giúp mình không hiểu sao chỉ thấy báo #NAME? , vì mình dùng Office 2003. Bạn xem lại giúp mình, xin cảm ơn bạn.
 

File đính kèm

Cảm ơn bạn đã quan tâm, việc làm tròn số đấy gọi là "chẵn lấy lẻ bỏ" không phải là do mình nghĩ ra, mà do quy định của ngành nghề mà.
Còn 2 công thức mà bạn giúp mình không hiểu sao chỉ thấy báo #NAME? , vì mình dùng Office 2003. Bạn xem lại giúp mình, xin cảm ơn bạn.
Trước hết, tôi nhầm một chút ở công thức trên: Thay vì gõ ISODD(A2) thì phải sửa lại thành ISODD(QUOTIENT(A2,1)), tương tự cho hàm ISEVEN.
Hiện tại tôi không dùng Excel 2003 nên không nhớ chính xác là trên Excel 2003 có 2 hàm ISODD và ISEVEN không. Nếu không có thì bạn có thể thay 2 công thức trên bởi 2 công thức này:
Mã:
=IF(MOD(QUOTIENT(A2,1),2),ROUNDUP(A2,0),ROUNDDOWN(A2,0))
Mã:
=ROUNDDOWN(A2,0)+MOD(QUOTIENT(A2,1),2)
 
Trước hết, tôi nhầm một chút ở công thức trên: Thay vì gõ ISODD(A2) thì phải sửa lại thành ISODD(QUOTIENT(A2,1)), tương tự cho hàm ISEVEN.
Hiện tại tôi không dùng Excel 2003 nên không nhớ chính xác là trên Excel 2003 có 2 hàm ISODD và ISEVEN không. Nếu không có thì bạn có thể thay 2 công thức trên bởi 2 công thức này:
Mã:
=IF(MOD(QUOTIENT(A2,1),2),ROUNDUP(A2,0),ROUNDDOWN(A2,0))
Mã:
=ROUNDDOWN(A2,0)+MOD(QUOTIENT(A2,1),2)
Thật là buồn vì mình đã làm theo hướng dẫn của bạn mà vẫn chưa được.
 
Trước hết, tôi nhầm một chút ở công thức trên: Thay vì gõ ISODD(A2) thì phải sửa lại thành ISODD(QUOTIENT(A2,1)), tương tự cho hàm ISEVEN.
Hiện tại tôi không dùng Excel 2003 nên không nhớ chính xác là trên Excel 2003 có 2 hàm ISODD và ISEVEN không. Nếu không có thì bạn có thể thay 2 công thức trên bởi 2 công thức này:
Mã:
=IF(MOD(QUOTIENT(A2,1),2),ROUNDUP(A2,0),ROUNDDOWN(A2,0))
Mã:
=ROUNDDOWN(A2,0)+MOD(QUOTIENT(A2,1),2)
Phúc cho hỏi sao không dùng hàm INT mà dùng hàm QUOTIENT (lấy phần nguyên của 1 phép chia)?
Với số 1.5, nếu "chẵn lấy lẻ bỏ" thì đây là số lẻ, vậy phải làm tròn lên 2, sao a.nguoidensau lại cho kết quả là 1?
 
Thật là buồn vì mình đã làm theo hướng dẫn của bạn mà vẫn chưa được.
Bạn xem trong file này xem sao. Trong đó tôi có chụp một cái hình mà công thức tính được trên máy tôi (Excel 2010), chứng tỏ rằng công thức có trả về kết quả.
 

File đính kèm

Bạn leonguyenz ah, câu cửa miệng là " chẵn lấy lẻ bỏ" như vậy. Nhưng việc làm tròn số tuân thủ theo kiểu những số lẻ mà đằng sau dấu chấm(.) là 5 thì tăng lên 1 đơn vị, còn nếu chẵn thì giữ nguyên. Quy định hơi buồn cười phải không bạn, nhưng vẫn tồn tại mấy chục năm nay.
 
Phúc cho hỏi sao không dùng hàm INT mà dùng hàm QUOTIENT (lấy phần nguyên của 1 phép chia)?
Với số 1.5, nếu "chẵn lấy lẻ bỏ" thì đây là số lẻ, vậy phải làm tròn lên 2, sao a.nguoidensau lại cho kết quả là 1?
Hàm INT hay hàm QUOTIENT thì với trường hợp này cũng như nhau thôi mà.
Còn vấn đề thứ 2 mà Thảo thắc mắc thì mình cũng đã thắc mắc ngay tại bài #2 rồi đó, nhưng chưa thấy tác giả phản hồi gì.
 
Bạn xem trong file này xem sao. Trong đó tôi có chụp một cái hình mà công thức tính được trên máy tôi (Excel 2010), chứng tỏ rằng công thức có trả về kết quả.
Lạ thật, công thức giống y chang nhau mà 1 file cho kết quả( bài#7), 1 file không(bài#3). Nhưng có 1 điều đặc biệt là khi mình đưa con trỏ về cuối công thức D2 của bạn nghiaphuc và Enter thì lại cho kết quả #NAME? Mình không thể hiểu được tại sao lại như vậy.
 
Lạ thật, công thức giống y chang nhau mà 1 file cho kết quả( bài#7), 1 file không(bài#3). Nhưng có 1 điều đặc biệt là khi mình đưa con trỏ về cuối công thức D2 của bạn nghiaphuc và Enter thì lại cho kết quả #NAME? Mình không thể hiểu được tại sao lại như vậy.
Office 2003, bạn phải cài Analysis Toolpak
 
Office 2003 thì bạn dùng cái này!
Mã:
=FLOOR(ROUNDUP(A2,0),2)
Đúng là công thức của bạn phù hợp với Office 2003, vấn đề của mình đã được giải quyết. Mình xin cảm ơn bạn suu16b, nghiaphuc và những người khác đã quan tâm tới vướng mắc của mình. Xin chào mọi người.
 
Hàm INT hay hàm QUOTIENT thì với trường hợp này cũng như nhau thôi mà.
Còn vấn đề thứ 2 mà Thảo thắc mắc thì mình cũng đã thắc mắc ngay tại bài #2 rồi đó, nhưng chưa thấy tác giả phản hồi gì.
Mình xin lỗi các bạn vì sự sơ xuất, lẽ ra 1.5 phải làm tròn là 2.0
 
Sorry vì không đọc mấy bài ở trên. Bạn dùng công thức ở bài #11 đi
Lại có không ổn rồi bạn susu16b và mọi người ơi!
Không ổn ở chỗ: Nếu cột A mà có các số từ 0.1 đến 0.99 thì số làm tròn lại là 0. Nói cụ thể là những số nào có đuôi .5 thì mới áp dụng như công thức của bạn suu16, còn những số lớn hơn .5 thì phải tăng lên 1 đơn vị, ví dụ 0.6 , 0.75.......---> làm tròn 1.0 .
 

File đính kèm

Lại có không ổn rồi bạn susu16b và mọi người ơi!
Không ổn ở chỗ: Nếu cột A mà có các số từ 0.1 đến 0.99 thì số làm tròn lại là 0. Nói cụ thể là những số nào có đuôi .5 thì mới áp dụng như công thức của bạn suu16, còn những số lớn hơn .5 thì phải tăng lên 1 đơn vị, ví dụ 0.6 , 0.75.......---> làm tròn 1.0 .
Do file bạn đưa thì 0,5->1, nếu vậy thì bạn thêm vào
Mã:
=IF(AND(A9>0.5,A9<=1),1,FLOOR(ROUNDUP(A9,0),2))
 
Mình xin lỗi các bạn vì sự sơ xuất, lẽ ra 1.5 phải làm tròn là 2.0
còn những số lớn hơn .5 thì phải tăng lên 1 đơn vị, ví dụ 0.6 , 0.75.......---> làm tròn 1.0 .
Rốt lại là "hổng hiểu"!
Chỉ cần ví dụ rõ như thế này
1.1 --> ?
1.2 --> ?
1.3 --> ?
1.4 --> ?
1.5--> ?
1.6 --> ?
1.7 --> ?
1.8 --> ?
1.9 --> ?
2.0 --> ?
..................
..................
Xong!
Hơn chục bài rồi mà vẫn chưa làm cho người khác hiểu bạn muốn gì.
 
Lần chỉnh sửa cuối:
Rốt lại là "hổng hiểu"!
Chỉ cần ví dụ rõ như thế này
1.1 --> ?
1.2 --> ?
1.3 --> ?
1.4 --> ?
1.5--> ?
1.6 --> ?
1.7 --> ?
1.8 --> ?
1.9 --> ?
2.0 --> ?
..................
..................
Xong!
Hơn chục bài rồi mà vẫn chưa làm cho người khác hiểu bạn muốn gì.
Em xin lỗi thầy Ba tê vì cách diễn đạt của em làm người khác khó hiểu do tính không cận thận của em.
 
Rốt lại là "hổng hiểu"!
Chỉ cần ví dụ rõ như thế này
1.1 --> ?
1.2 --> ?
1.3 --> ?
1.4 --> ?
1.5--> ?
1.6 --> ?
1.7 --> ?
1.8 --> ?
1.9 --> ?
2.0 --> ?
..................
..................
Xong!
Hơn chục bài rồi mà vẫn chưa làm cho người khác hiểu bạn muốn gì.
Tất cả các số này đều làm tròn là 2.
Tóm lại:
Từ 0 đến <= 0,5 thì làm tròn bằng 0
Từ > 0,5 đến <= 1 thì làm tròn bằng 1
Nếu >1:
+ nếu phần nguyên là số lẻ thì làm tròn lên số chẵn gần nhất
+ nếu phần nguyên là số chẵn thì làm tròn xuống số chẵn gần nhất

nếu <0 thì hổng biết ?????
 
Lần chỉnh sửa cuối:
Chào mọi người!
Hôm qua khi tôi đưa vấn đề vướng mắc của mình nhờ mọi người giúp và đã nhận được sự giúp đỡ của mọi người. Tuy nhiên vấn đề chưa được giải quyết triệt để. Vì vậy sau khi đọc lại các bài viết và kiểm tra lại, tôi gửi bài lên đây với mong muốn trong File đã ghi rõ.
Xin cảm ơn mọi người
 

File đính kèm

Chào mọi người!
Hôm qua khi tôi đưa vấn đề vướng mắc của mình nhờ mọi người giúp và đã nhận được sự giúp đỡ của mọi người. Tuy nhiên vấn đề chưa được giải quyết triệt để. Vì vậy sau khi đọc lại các bài viết và kiểm tra lại, tôi gửi bài lên đây với mong muốn trong File đã ghi rõ.
Xin cảm ơn mọi người
Bạn thử dùng công thức này xem sao
PHP:
=IF((A2-INT(A2))=0.5,ROUND(A2,0)-MOD(ROUND(A2,0),2),ROUND(A2,0))
Ghi chú:
phần dữ liệu của bạn A7: 11.5, C7: 11 là không đúng nhé, phải là 12 mới đúng như mô tả của bạn nhé.
 
Bạn thử dùng công thức này xem sao
PHP:
=IF((A2-INT(A2))=0.5,ROUND(A2,0)-MOD(ROUND(A2,0),2),ROUND(A2,0))
Ghi chú:
phần dữ liệu của bạn A7: 11.5, C7: 11 là không đúng nhé, phải là 12 mới đúng như mô tả của bạn nhé.
Trước tiên là xin lỗi bạn vì không kiểm tra hết, sau là cảm ơn bạn vì công thức chuẩn quá rồi.
 
Dữ liệu tại [C7] của bạn vẫn mâu thuẩn với lời ghi của bạn

Bạn xem trong file, mình làm UDF

Dữ liệu của bạn vẫn chưa có các số mà hàng thập fân nhỏ hơn 5;

Nếu bạn làm về kỹ thuật, mình khuyên bạn nên thận trọng nhiều hơn nữa trong công việc chuyên môn!
 

File đính kèm

Bạn xem trong file, mình làm UDF

Dữ liệu của bạn vẫn chưa có các số mà hàng thập fân nhỏ hơn 5;

Nếu bạn làm về kỹ thuật, mình khuyên bạn nên thận trọng nhiều hơn nữa trong công việc chuyên môn!
Em xin cảm ơn lời khuyên quý báu cùng với Code VBA hay của thầy. Kính chúc thầy và gia đình dồi dào sức khỏe và hạnh phúc.
 
..................
..................
Xong!
Hơn chục bài rồi mà vẫn chưa làm cho người khác hiểu bạn muốn gì.

Đây là loại ROUND của con toán Ngân Hàng, tiếng chuyên môn gọi là Bankers Rounding. Vấn đề này tôi đã giải thích cặn kẽ lý do, nguyên tắc và cách sử dụng một lần rồi.

Tuy chủ thớt nói là trong ngành công việc của mình nhưng chính chủ thớt cũng chả hiểu gì về con toán này cho nên giải thích không được.

Cách làm tròn của Ngân Hàng cũng tương tự như cách của toán. Chỉ khác cách sử lý số 5.

Đại khái là ta có tất cả 10 chữ số sau đơn vị tròn: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Số 0 thì không cần làm tròn. Ta đồng thời sử lý 4 số nhỏ hơn 5 (1234) -> chặt bỏ; và 4 số lớn hơn 5 (6789) -> nâng lên 1. Còn lại số 5, nếu cũng nâng lên 1 thì đó là cách làm tròn toán học.

Tuy nhiên, trong ngành Ngân Hàng, người ta cho rằng nâng như vậy là thiên vị. Và người ta đồng ý dùng một quy tắc cho nó cân bằng hơn. Quy tắc này gọi là "nâng đến chữ số chẵn". Tức là nếu trước số 5 là số lẻ (1,3,5,7,9) thì nâng nó lên thành chẵn (2,4,6,8,0); trong khi nếu trước số 5 đã sẵn là chẵn (0,2,4,6,8) thì để yên (chỉ chặt bỏ 5 đi)


Bạn xem trong file, mình làm UDF

Dữ liệu của bạn vẫn chưa có các số mà hàng thập fân nhỏ hơn 5;

Nếu bạn làm về kỹ thuật, mình khuyên bạn nên thận trọng nhiều hơn nữa trong công việc chuyên môn!
1. Chủ thớt làm về Ngân Hàng chứ không phải kỹ thuật.

2. Muốn làm UDF thì cũng không cần phải rườm rà thế. Chỉ cần gọi hàm ROUND của VBA là được. VBA vốn là công cụ của Access cho nên hàm ROUND của VBA cũng theo luật của Access. (Tôi đã từng giải thích sự khác nhau giữa hàm ROND của VBA và hàm ROUND của Worksheet)
 
Bạn leonguyenz ah, câu cửa miệng là " chẵn lấy lẻ bỏ" như vậy. Nhưng việc làm tròn số tuân thủ theo kiểu những số lẻ mà đằng sau dấu chấm(.) là 5 thì tăng lên 1 đơn vị, còn nếu chẵn thì giữ nguyên. Quy định hơi buồn cười phải không bạn, nhưng vẫn tồn tại mấy chục năm nay.

sao lại buồn cười, sau khi làm tròn rồi còn làm các phép tính khác nữa. bạn thích tính toán với sổ lẻ hay số chẵn?
 

Bài viết mới nhất

Back
Top Bottom