PDA

View Full Version : Hàm làm tròn số trong Excel



minh1977
15-09-08, 10:43 AM
Tôi muốn làm tròn số trong Excel như ví dụ sau: số 1,110,650, làm tròn số là 1,110,000. Vậy phải dùng hàm nào trong Excel. Vui lòng chỉ giúp!

TKT
15-09-08, 10:51 AM
Tôi muốn làm tròn số trong Excel như ví dụ sau: số 1,110,650, làm tròn số là 1,110,000. Vậy phải dùng hàm nào trong Excel. Vui lòng chỉ giúp!
Bạn dùng hàm ROUNDDOWN.
=ROUNDDOWN(1 110 650,-3)

ChanhTQ@
15-09-08, 12:00 PM
Mình muốn làm tròn đến 5.000 đồng, thì là sao:
từ 3 đ đến 8 đồng thì lấy thành 5.000;
Dưới đó thì bỏ Và trên đó thì cọng thêm 10.000 đ
Xin cảm ơn các bạn.

cao mạnh sơn
15-09-08, 12:16 PM
Mình muốn làm tròn đến 5.000 đồng, thì là sao:
từ 3 đ đến 8 đồng thì lấy thành 5.000;
Dưới đó thì bỏ Và trên đó thì cọng thêm 10.000 đ
Xin cảm ơn các bạn.
Hàm Round có thể làm tròn từ 5.000 đ trở lên thành 10.000 đ nhưng 3 đ đến 8 đ làm tròn thành 5.000 đ thì mình chưa thử,có lẽ phải dùng cách khác thôi

cadafi
15-09-08, 12:23 PM
Mình muốn làm tròn đến 5.000 đồng, thì là sao:
từ 3 đ đến 8 đồng thì lấy thành 5.000;
Dưới đó thì bỏ Và trên đó thì cọng thêm 10.000 đ
Xin cảm ơn các bạn.

Vậy thì bạn lồng hàm IF vào:


Giả sử A1 chứa giá trị cần Round:
=IF(A1<3,0,IF(A1<=8,5*ROUNDUP(A1,-3),ROUNDUP(A1,-4)))

ndu96081631
15-09-08, 12:31 PM
Mình muốn làm tròn đến 5.000 đồng, thì là sao:
từ 3 đ đến 8 đồng thì lấy thành 5.000;
Dưới đó thì bỏ Và trên đó thì cọng thêm 10.000 đ
Xin cảm ơn các bạn.
Cái này thì không dùng ROUND mà dùng tí "xảo thuật"
Giã sử ta có các cell từ A1 đến A30 chứa các số 1, 2, 3.... vân vân...
Vậy dùng công thức này xem:

=5000*MIN(INT((A1-3)/6)+1,2)+$A1*MIN(MAX(INT((A1-9)/6)+1,0),1)

cao mạnh sơn
15-09-08, 12:35 PM
Vậy thì bạn lồng hàm IF vào:
To:Ca_Dafi
Chắc ý tác giả không phải vậy đâu,theo mình nghĩ có thể là với các số hàng nghìn nếu trên 8000 thì làm tròn thành 10000,nếu trong khoảng 3000 đến 8000 thì làm tròn thành 5000 còn dưới 3000 thì làm tròn xuống còn 0.
Nếu đúng như vậy thì công thức phải là
=INT(A1/10000)*10000+IF(MOD(A1,10000)>8000,10000,IF(MOD(A1,10000)<3000,0,5000))
Đoán mò vậy thôi.

ptm0412
15-09-08, 12:39 PM
Câu hỏi kỳ quá.


Mình muốn làm tròn đến 5.000 đồng, thì là sao:
từ 3 đ đến 8 đồng thì lấy thành 5.000;
Dưới đó thì bỏ Và trên đó thì cọng thêm 10.000 đ


Nếu làm tròn đến 5.000, thì 3đ đến 8đ là cả số hay chỉ là phần lẻ của thí dụ như 11005?
Trên đó thì cộng 10.000đ, vậy 9đ cũng thành 10.000đ, 2 triệu cũng thành 10.000đ?

Nếu hiểu như Cao Mạnh Sơn (chắc đúng), thì có thể giải quyết bằng ceiling() kết hợp với Floor() và mod()

cadafi
15-09-08, 12:42 PM
To:Ca_Dafi
Chắc ý tác giả không phải vậy đâu,theo mình nghĩ có thể là với các số hàng nghìn nếu trên 8000 thì làm tròn thành 10000,nếu trong khoảng 3000 đến 8000 thì làm tròn thành 5000 còn dưới 3000 thì làm tròn xuống còn 0.
Nếu đúng như vậy thì công thức phải là
=INT(A1/10000)*10000+IF(MOD(A1,10000)>8000,10000,IF(MOD(A1,10000)<3000,0,5000))
Đoán mò vậy thôi.

Vâng, đồng ý với cao mạnh sơn về việc này. Mình cũng nhấn mạnh rằng không có hàm nào thỏa mãn điều kiện của tác giả (trừ UDF). Phải lồng cái gì đó vào, không dùng IF thì dùng hàm khác.

tintinmilou
15-09-08, 12:47 PM
To:Ca_Dafi
Chắc ý tác giả không phải vậy đâu,theo mình nghĩ có thể là với các số hàng nghìn nếu trên 8000 thì làm tròn thành 10000,nếu trong khoảng 3000 đến 8000 thì làm tròn thành 5000 còn dưới 3000 thì làm tròn xuống còn 0.
Nếu đúng như vậy thì công thức phải là
=INT(A1/10000)*10000+IF(MOD(A1,10000)>8000,10000,IF(MOD(A1,10000)<3000,0,5000))
Đoán mò vậy thôi.
Em có cái công thức này, ngắn hơn anh Cao Mạnh Sơn nhiều, nhưng ra đáp số y chang công thức của anh:

=IF(OR(A1<3000,A1>=8000),ROUND(A1,-4),5000)

tintinmilou
15-09-08, 12:54 PM
Câu hỏi kỳ quá.

Nếu làm tròn đến 5.000, thì 3đ đến 8đ là cả số hay chỉ là phần lẻ của thí dụ như 11005?
Trên đó thì cộng 10.000đ, vậy 9đ cũng thành 10.000đ, 2 triệu cũng thành 10.000đ?

Nếu hiểu như Cao Mạnh Sơn (chắc đúng), thì có thể giải quyết bằng ceiling() kết hợp với Floor() và mod()
Chắc là bạn ấy nói theo kiểu bình dân đó, người ta hay gọi 3000 là 3 đồng í mà.
Nhưng, bi giờ nếu cho là vậy, nghĩa là 3 đồng = 3000, 8 đồng = 8000, thì cái công thức này của Ca_Dafi:

=IF(A1<3,0,IF(A1<=8,5*ROUNDUP(A1,-3),ROUNDUP(A1,-4)))
Nó ra đáp số làm sao í...

Xin phép thay 3 = 3000, 8 = 8000, và bỏ cái 5* đi, thì cũng không ra đúng yêu cầu:

=IF(A1<3000,0,IF(A1<=8000,ROUNDUP(A1,-3),ROUNDUP(A1,-4)))
Nghĩa là với những số trong khoảng 3000 đến 8000, nó sẽ làm tròn lên hàng ngàn gần nhất thôi, chứ không phải làm tròn thành 5000.
Ca_Dafi xem lại tí ...

ndu96081631
15-09-08, 12:56 PM
Em có cái công thức này, ngắn hơn anh Cao Mạnh Sơn nhiều, nhưng ra đáp số y chang công thức của anh:
=IF(OR(A1<3000,A1>=8000),ROUND(A1,-4),5000)

Dư dấu =
Các bạn lưu ý tác giã nói rằng:

Mình muốn làm tròn đến 5.000 đồng, thì là sao:
từ 3 đ đến 8 đồng thì lấy thành 5.000;
Dưới đó thì bỏ Và trên đó thì cộng thêm 10.000 đ
Xin cảm ơn các bạn.
Cộng thêm nha... chứ không phải làm tròn thành 10000
Ai cũng thắc mắc vì yêu cầu chưa được rõ ràng, dù sao mong bạn ChanhTQ@ nói rõ thêm 1 chút

cao mạnh sơn
15-09-08, 12:58 PM
Em có cái công thức này, ngắn hơn anh Cao Mạnh Sơn nhiều, nhưng ra đáp số y chang công thức của anh:
=IF(OR(A1<3000,A1>=8000),ROUND(A1,-4),5000)

Bạn kiểm tra lại đâu có giống kết quả.Khác nhau hoàn toàn đấy chứ

cadafi
15-09-08, 01:06 PM
Chắc là bạn ấy nói theo kiểu bình dân đó, người ta hay gọi 3000 là 3 đồng í mà.
Nhưng, bi giờ nếu cho là vậy, nghĩa là 3 đồng = 3000, 8 đồng = 8000

Bạn suy luận vậy chưa đúng, vậy tại sao tác giả nói:


Mình muốn làm tròn đến 5.000 đồng, thì là sao: ===> tại sao không nói là 5đ
từ 3 đ đến 8 đồng thì lấy thành 5.000;
Dưới đó thì bỏ Và trên đó thì cọng thêm 10.000 đ ===> tại sao không nói là 10đ
Xin cảm ơn các bạn.



......., thì cái công thức này của Ca_Dafi:

=IF(A1<3,0,IF(A1<=8,5*ROUNDUP(A1,-3),ROUNDUP(A1,-4)))
Nó ra đáp số làm sao í...

Xin phép thay 3 = 3000, 8 = 8000, và bỏ cái 5* đi, thì cũng không ra đúng yêu cầu:

=IF(A1<3000,0,IF(A1<=8000,ROUNDUP(A1,-3),ROUNDUP(A1,-4)))
Nghĩa là với những số trong khoảng 3000 đến 8000, nó sẽ làm tròn lên hàng ngàn gần nhất thôi, chứ không phải làm tròn thành 5000.
Ca_Dafi xem lại tí ...

Xin lỗi bạn, theo mình trong toán học 3 đồng và 3000 đồng khác nhau. Vì thế cách giải cũng sẽ khác nhau. Hãy chờ tác giả nói rõ thêm cái đã.

tintinmilou
15-09-08, 01:12 PM
Bạn kiểm tra lại đâu có giống kết quả.Khác nhau hoàn toàn đấy chứ
Anh xem lại giúp em:
|
A
|
B
|
C
|

1
|
Số
|
=IF(OR(A1<3000,A1>=8000),ROUND(A1,-4),5000)
|
=INT(A1/10000)*10000+IF(MOD(A1,10000)>8000,10000,IF(MOD(A1,10000)<3000,0,5000))
|

2
|
2,053
|
0
|
0
|

3
|
2,861
|
0
|
0
|

4
|
5,102
|
5,000
|
5,000
|

5
|
8,455
|
10,000
|
10,000
|

6
|
4,023
|
5,000
|
5,000
|

7
|
6,842
|
5,000
|
5,000
|

8
|
1,417
|
0
|
0
|

9
|
2,637
|
0
|
0
|

10
|
6,277
|
5,000
|
5,000
|

11
|
5,329
|
5,000
|
5,000
|

12
|
7,215
|
5,000
|
5,000
|

13
|
2,767
|
0
|
0
|

14
|
7,769
|
5,000
|
5,000
|

15
|
1,526
|
0
|
0
|

16
|
4,350
|
5,000
|
5,000
|

17
|
9,073
|
10,000
|
10,000
|

18
|
6,246
|
5,000
|
5,000
|

19
|
2,335
|
0
|
0
|

20
|
4,240
|
5,000
|
5,000
|

21
|
4,331
|
5,000
|
5,000
|

22
|
8,618
|
10,000
|
10,000
|

23
|
1,224
|
0
|
0
|

24
|
1,387
|
0
|
0
|

25
|
9,702
|
10,000
|
10,000
|

ptm0412
15-09-08, 01:12 PM
Bỏ cái 5* của người ta đi, thì làm tròn đến hàng ngàn gần nhất chứ sao nữa? Để nguyên 5* thì mới là 5000 chứ!


=IF(OR(A1<3000,A1>=8000),ROUND(A1,-4),5000)

Cái này không giống y chang Cao Mạnh Sơn đâu. Thử làm tròn với A1 là 16.000 xem.
Công thức Sơn ra kq 15.000, của tintin là 20.000
Nghĩa là với A1>8.000, nó làm tròn round(A1,-4) tuốt tuột.

Của Sơn là đúng nhất theo cách hiểu của Sơn.

o0o
15-09-08, 01:27 PM
mình viết lại công thức của Sơn theo cách của mình để dễ hiểu hơn:
=IF(OR(MOD(A1,10000)<3000,MOD(A1,10000)>8000),ROUND(A1,-4),ROUNDDOWN(A1,-4)+5000)

BNTT
15-09-08, 02:18 PM
Mình muốn làm tròn đến 5.000 đồng, thì là sao:
từ 3 đ đến 8 đồng thì lấy thành 5.000;
Dưới đó thì bỏ Và trên đó thì cọng thêm 10.000 đ
Xin cảm ơn các bạn.
Hỏi sao trả lời vậy, khỏi suy nghĩ, khỏi tranh luận:

=IF(B1<3, 0, IF(B1<=8, 5000, B1+10000)
Nếu <3 thì bỏ (=0), rồi từ 3 cho đến 8 thì bằng 5000, trên 8 thì lấy số đó cộng thêm 10000...

ChanhTQ@
15-09-08, 02:20 PM
Dư dấu =
Các bạn lưu ý tác giã nói rằng: Cộng thêm nha... chứ không phải làm tròn thành 10000
Ai cũng thắc mắc vì yêu cầu chưa được rõ ràng, dù sao mong bạn ChanhTQ@ nói rõ thêm 1 chút
Thành thật xin lỗi các bạn vì viết văn dỡ.

Mình muốn rằng:
Với số tiền là 2.500đ => 0 đ
. . . 5.600 => 5.000 đ;
8.900đ => 10.000 đ
. . .
15.678 đ => 15.000;
98.762.540 đ => 98.760.000 đ
124.568.789 đ => 124.570.000 đ

BNTT
15-09-08, 02:37 PM
Thành thật xin lỗi các bạn vì viết văn dỡ.

Mình muốn rằng:
Với số tiền là 2.500đ => 0 đ
. . . 5.600 => 5.000 đ;
8.900đ => 10.000 đ
. . .
15.678 đ => 15.000;
98.762.540 đ => 98.760.000 đ
124.568.789 đ => 124.570.000 đ
Vẫn khó hiểu quá, bạn ơi.
Có phải quy luật của bạn là thế này:

000.002.500 = 000.000.000
098.762.540 = 098.760.000

000.005.600 = 000.005.000
000.015.678 = 000.015.000

000.008.900 = 000.000.000 + 10000 = 000.010.000
123.568.789 = 123.560.000 + 10000 = 123.570.000

Nghĩa là phải xét đến 4 con số cuối cùng tính từ trái sang (hàng ngàn) ?
Bạn có thể cho thêm nhiều nhiều ví dụ không ?

ChanhTQ@
15-09-08, 02:43 PM
Có phải quy luật của bạn là thế này:
000.002.500 = 000.000.000
098.762.540 = 098.760.000

000.005.600 = 000.005.000
000.015.678 = 000.015.000
000.008.900 = 000.000.000 + 10000 = 000.010.000
124.568.789 = 123.560.000 + 10000 = 123.570.000
Nghĩa là phải xét đến 4 con số cuối cùng tính từ trái sang (hàng ngàn) ?
Bạn có thể cho thêm nhiều nhiều ví dụ không ?
Đúng như bạn hiểu đó! Bài toán làm tròn đến 5.000 đồng mà!

OverAC
15-09-08, 02:51 PM
Bạn thử công thức như sau
=ROUND(so*2,-4)/2

BNTT
15-09-08, 03:00 PM
Vậy cái mốc để xét 4 con số hàng ngàn đó là:

0000-2999
3000-7999
8000-9999

Nếu vậy thì, tạm thời dùng đỡ cái này:

=IF(OR(RIGHT(A1,4)*1 < 3000, RIGHT(A1,4)*1 > 8000), ROUND(A1,-4), SUBSTITUTE(A1,RIGHT(A1,4), 5000)*1)
Tôi sẽ nghĩ tiếp xem có thể làm cho ngắn hơn không.

BNTT
15-09-08, 03:05 PM
Bạn thử công thức như sau
=ROUND(so*2,-4)/2
Rất hay, nhưng chưa đạt yêu cầu, OverAC ơi.
Ví dụ:
Bạn ấy muốn rằng: 98.762.540 = 98.760.000, công thức của OverAc = 98.765.000
Và ngay cái đầu tiên: 2.500 = 0, công thức của OverAc = 5.000 !

-------------

Mới xem lại xong, công thức của Cao Mạnh Sơn cũng đúng với trường hợp này. Vậy là bạn ấy đã suy luận đúng ngay từ đầu :clap:

=INT(A1/10000)*10000 + IF(MOD(A1,10000)>8000, 10000, IF(MOD(A1,10000)<3000, 0, 5000))

ptm0412
15-09-08, 03:43 PM
Công thức này ngắn nè:
=IF(MOD(A2;5000)>3000;CEILING(A2;5000);FLOOR(A2;5000))
Suy luận của Ptm cũng đúng từ đầu,hi hi.

ChanhTQ@
15-09-08, 04:10 PM
Công thức này ngắn nè:
=IF(MOD(A2;5000)>3000;CEILING(A2;5000);FLOOR(A2;5000))
Suy luận của Ptm cũng đúng từ đầu,hi hi.
Công thức này hay quá đi mất! Nhưng hình như phải thêm dấu '=' trước số 3.000 thì mới đạt.
Rất cảm ơn bạn PTM & toàn thể các bạn đã có bài trong topic này!

cao mạnh sơn
15-09-08, 05:27 PM
Công thức này ngắn nè:
=IF(MOD(A2;5000)>3000;CEILING(A2;5000);FLOOR(A2;5000))
Suy luận của Ptm cũng đúng từ đầu,hi hi.
Công thức này thì em không tài nào nghĩ ra,vừa tra cứu lại,hay quá.

charlie.vo
17-09-08, 10:12 AM
Tôi cần làm tròn ở phần thập phân, ví dụ:
1.1; 1.2; 1.3 thì làm tròn thành 1.5
tương tự: 1.6; 1.7; 1.8 ... thì làm tròn thành 2.0
bạn nào có cachs chi hay hay xin chỉ giáo
cảm ơn nhiều

thlam
17-09-08, 10:19 AM
Tôi cần làm tròn ở phần thập phân, ví dụ:
1.1; 1.2; 1.3 thì làm tròn thành 1.5
tương tự: 1.6; 1.7; 1.8 ... thì làm tròn thành 2.0
bạn nào có cachs chi hay hay xin chỉ giáo
cảm ơn nhiều
Dùng ceiling nha bạn
=CEILING(A1,0.5)

huuthang_bd
17-09-08, 03:43 PM
Công thức này ngắn nè:
=IF(MOD(A2;5000)>3000;CEILING(A2;5000);FLOOR(A2;5000))
Suy luận của Ptm cũng đúng từ đầu,hi hi.

Công thức này liệu có phải là công thức tối ưu chưa???
Các bạn thử công thức này xem:

=FLOOR(A2+2000,5000)

Chuotdong
19-09-08, 09:52 AM
Tiện thể cho mình hỏi luôn, cần làm tròn theo một giải định trước thì công thức thế nào cho gọn. Ví dụ mình cần làm tròn ở các mốc 0, 3, 5, 7 đồng

Ví dụ cụ thể nếu số đó là 11 lấy =10 (vì gần các mốc định trên nhất) nếu số là 122,9 lấy =123 nếu là 338 lấy = 337 .v.v...

BNTT
19-09-08, 10:18 AM
Tiện thể cho mình hỏi luôn, cần làm tròn theo một giải định trước thì công thức thế nào cho gọn. Ví dụ mình cần làm tròn ở các mốc 0, 3, 5, 7 đồng

Ví dụ cụ thể nếu số đó là 11 lấy =10 (vì gần các mốc định trên nhất) nếu số là 122,9 lấy =123 nếu là 338 lấy = 337 .v.v...

11 = 10 : làm tròn lui
122.9 = 123 : làm tròn tới
338 = 337 : làm tròn lui

Nếu bạn nói là "gần các mốc định trên nhất", vậy:

14 = ? .... 13 hay 15 bạn ơi ?
16 = ? .... 17 hay 15 bạn ơi ?

tigertiger
19-09-08, 12:07 PM
Tiện thể cho mình hỏi luôn, cần làm tròn theo một giải định trước thì công thức thế nào cho gọn. Ví dụ mình cần làm tròn ở các mốc 0, 3, 5, 7 đồng

Ví dụ cụ thể nếu số đó là 11 lấy =10 (vì gần các mốc định trên nhất) nếu số là 122,9 lấy =123 nếu là 338 lấy = 337 .v.v...


rất hay, nhưng bạn nên thêm tiêu chí là nếu ở giữa như 16.0 thì làm tròn về đâu 15 hay 17 tức là ưu tiên về dưới hay trên , là có thể làm được

các làm là kiểm tra gần mốc nào thì ta cộng / trừ -> rồi dùng hàm ROUND là được,

Chuotdong
19-09-08, 12:17 PM
Nếu ở giữa thì làm tròn lên như quy tắc round thông thường thôi: Ví dụ bạn có số 1,255551234 mà thầy giáo toán yêu cầu bạn làm tròn đến 3 chữ số thập phân thì sẽ lấy = 1,256 có phải ko vậy.

Chú ý khoảng giữa các mốc sẽ có thể không đều đâu nhé, có nghĩa là giải mốc có thể là 0; 3; 5,2; 7,85

Còn thực tế mình cần random việc chọn làm tròn lên hay xuống, để làm giả số liệu đo ấy mà

cadafi
19-09-08, 12:24 PM
Nếu ở giữa thì làm tròn lên như quy tắc round thông thường thôi: Ví dụ bạn có số 1,255551234 mà thầy giáo toán yêu cầu bạn làm tròn đến 3 chữ số thập phân thì sẽ lấy = 1,256 có phải ko vậy.

Chú ý khoảng giữa các mốc sẽ không đều đâu nhé
Tốt nhất bạn nên liệt kê dữ liệu nhiều hơn một chút. Ví dụ: bạn liệt kê các số từ 1 đến 100 rồi cột kế bên bạn gõ số mong muốn làm tròn vào.

11 làm tròn là 10
vậy:
12 làm tròn là 10 hay 11
13 làm tròn là 10 hay 12.
...
97 làm tròn là 90 hay 96 hay 98 hay 100?

Cột mốc không đều vậy định nghĩa xem có bao nhiêu cột mốc?

Chuotdong
19-09-08, 01:49 PM
Mình đã nói là làm tròn lên rồi. Các mốc có 4 kể cả 0

BNTT
19-09-08, 02:47 PM
Nói thiệt, nhìn cái ví dụ bạn gửi lên, nhức cả cái đầu mà cũng không hiểu bạn muốn cái gì:

|
A|
B|
C|
D|
E|
F|

1|
Giá trị các mốc để làm tròn (xếp theo thứ tự tăng dần):|
0|
3|
5.2|
7.5|
.v.v…|

2| |
1.5|
1.1|
1.15| | |

3| |
16.6|
15.2| | | |

4| |
43.4|
43| | | |

5| |
72.1|
73| | | |

6| |
65.4|
65.2| | | |

7| |
13.9|
13| | | |

8| |
95.5| | | | |

9| |
86.7| | | | |

10| |
47.5| | | | |

11| |
20.9| | | | |

12| |
53.4| | | | |

13| |
26.7| | | | |

14| |
97.2| | | | |

15| |
73.7| | | | |

16| |
42.5| | | | |

17| |
52.9| | | | |

18| |
37.6| | | | |

19| |
31.6| | | | |

20| |
54.3| | | | |

21| |
92.3| | | | |

22| |
0.2| | | | |

23| |
17.8| | | | |

Chuotdong
19-09-08, 03:12 PM
Đơn giản hóa vấn đề là bình thường bạn quy tròn ngoài 0 còn theo mốc 5 hoặc 0,5 hoặc 0,05 ... (tùy theo yêu cầu bao nhiều số thập phân). nếu để tính tiền đồng thì ko có số thập phân nào, tính USD thì cần xét đến 2 số thập phân.

Bây giờ thì mốc quy tròn nhiều hơn 3; 5; 7 vậy thôi. Bỏ qua trường hợp mốc quy tròn là số lẻ đi cho dễ hiểu:

Chuotdong
19-09-08, 03:13 PM
Nếu bạn nói là "gần các mốc định trên nhất", vậy:

14 = ? .... 13 hay 15 bạn ơi ?
16 = ? .... 17 hay 15 bạn ơi ?
Làm tròn lên bạn ạ..................................= 15.......................=17...................

BNTT
19-09-08, 05:23 PM
@Chuột đồng:

Không phải tôi làm khó bạn. Nhưng bạn có thể nói rõ hơn được không?

Ở đây thì bạn nói:

Tiện thể cho mình hỏi luôn, cần làm tròn theo một giải định trước thì công thức thế nào cho gọn. Ví dụ mình cần làm tròn ở các mốc 0, 3, 5, 7 đồng

Ví dụ cụ thể nếu số đó là 11 lấy =10 (vì gần các mốc định trên nhất) nếu số là 122,9 lấy =123 nếu là 338 lấy = 337 .v.v...
11=10, 338=337 nghĩa làm làm tròn xuống

Rồi ở đây thì bạn lại nói:

Làm tròn lên bạn ạ..................................= 15.......................=17...................
Nghìa là 14=15, 16=17, là làm tròn lên

Vậy khi nào thì lên, khi nào thì xuống?

Bạn phải nói cho rõ nguyên tắc làm tròn, thì mới làm công thức được, hoặc viết VBA được...

Mở được GPE ra đã toát mồ hôi (chậm quá sức), down được bài của bạn xong... ướt cả áo, vì suy nghĩ!

Tôi gửi lại cái bảng tính của bạn. Tôi vẫn chịu thua. Không biết có ai hiểu được, nói giúp, cho tôi hiểu với:

|
A|
B|
C|
D|
E|

1|
Giá trị các mốc để làm tròn (xếp theo thứ tự tăng dần):|
0|
3|
5|
7|

2| |input|kết quả| | |

3| |
16.6|
15.2|Tại sao ở đây xuống nhiều vậy?| |

4| |
43.4|
43|Ở đây lẻ .4, thì bạn làm tròn xuống, cũng có lý| |

5| |
72.1|
73|Ở đây lẻ .1, thì bạn lại làm tròn lên ?| |

6| |
65.4|
65|Cái này giống 43.4=43, tạm hiểu| |

7| |
13.9|
15|Ở đây nữa, tại sao không bằng 14?| |

8| |
95.5|
95|Lẻ .5, làm tròn xuống ?| |

9| |
86.7|
87|Lẻ .7, làm tròn lên ?| |

10| |
47.5|
?|Còn mấy cái này nữa, sao bạn không làm tiếp luôn?| |

11| |
20.9|
?| | |

12| |
53.4|
?| | |

13| |
26.7|
?| | |

14| |
97.2|
?| | |

15| |
73.7|
?| | |

16| |
42.5|
?| | |

17| |
52.9|
?| | |

18| |
37.6|
?| | |

19| |
31.6|
?| | |

20| |
54.3|
?| | |

21| |
92.3|
?| | |

22| |
0.2|
?| | |

23| |
17.8|
?| | |

ndu96081631
19-09-08, 07:31 PM
@Chuột đồng:

Không phải tôi làm khó bạn. Nhưng bạn có thể nói rõ hơn được không?

Ở đây thì bạn nói:

11=10, 338=337 nghĩa làm làm tròn xuống

Rồi ở đây thì bạn lại nói:

Nghìa là 14=15, 16=17, là làm tròn lên

Vậy khi nào thì lên, khi nào thì xuống?

Bạn phải nói cho rõ nguyên tắc làm tròn, thì mới làm công thức được, hoặc viết VBA được...

Mở được GPE ra đã toát mồ hôi (chậm quá sức), down được bài của bạn xong... ướt cả áo, vì suy nghĩ!

Tôi gửi lại cái bảng tính của bạn. Tôi vẫn chịu thua. Không biết có ai hiểu được, nói giúp, cho tôi hiểu với:
Tớ cũng thế! Đọc 1 hồi "nổi khùng" luôn! LÊN LÊN XUỐNG XUỐNG... tùy điều kiện...
Đuối quá đi mất
Nói thật, tôi không cố ý nói bất cứ ai... nhưng mà khi ta đưa câu hỏi lên cũng nên nói cho rõ ràng 1 chút (hãy đặt mình vào vai trò người đọc)... Hic... Hic...
Đọc lần đầu tưởng đã hiểu... Đọc thêm phát nữa thấy.. hình như chưa hiểu đúng ý tác giã... Hỏi lại cái.. rồi kiên nhẩn đọc thêm phát nữa thấy... NGU luôn
Có phải mất công cho cả đôi bên không?

huuthang_bd
19-09-08, 07:50 PM
rất hay, nhưng bạn nên thêm tiêu chí là nếu ở giữa như 16.0 thì làm tròn về đâu 15 hay 17 tức là ưu tiên về dưới hay trên , là có thể làm được

các làm là kiểm tra gần mốc nào thì ta cộng / trừ -> rồi dùng hàm ROUND là được,
Trong trường này bạn không thể dùng hàm Round để làm tròn được vì hàm Round chỉ dùng để làm tròn số với bước nhảy 0.001, 0.01, 0.1, 1, 10, 100... Nếu bước nhảy khác dù cộng trừ thế nào bạn cũng không dùng hàm Round đc. Ví dụ làm tròn theo 2, 4, 6, 8... Bạn không thể dùng hàm Round mà phải dùng Ceiling (nếu làm tròn lên), và Floor (nếu làm tròn xuống).





Nếu ở giữa thì làm tròn lên như quy tắc round thông thường thôi: Ví dụ bạn có số 1,255551234 mà thầy giáo toán yêu cầu bạn làm tròn đến 3 chữ số thập phân thì sẽ lấy = 1,256 có phải ko vậy.

Chú ý khoảng giữa các mốc sẽ có thể không đều đâu nhé, có nghĩa là giải mốc có thể là 0; 3; 5,2; 7,85

Còn thực tế mình cần random việc chọn làm tròn lên hay xuống, để làm giả số liệu đo ấy mà
Hàm làm tròn hình như chỉ hỗ trợ khi bước nhảy đều. Nếu các mốc làm tròn của bạn không theo quy luật nào hết như: 0; 3; 5,2; 7,85 thì không áp dụng các hàm làm tròn được. Trong trường hợp của bạn mình đề xuất một giải pháp như sau:
Bạn liệt kê tất cả các mốc làm tròn trong một cột theo thứ tự tăng dần. Copy thành ba cột kế bên nhau. Hai cột đầu ngang hàng nhau và cột thứ ba chếch lên một dòng (dùng để lấy làm tròn lên xuống một cách ngẫu nhiên). Sau đó dùng hàm Vlookup dò tìm tương đối kết hợp với hàm RANDBETWEEN để lấy giá trị ngẫu nhiên. Ví dụ cụ thể như sau:

B1=Vlookup(A1,$D$1:$F$10,RANDBETWEEN(2,3),1)
A1 là số cần làm tròn
$D$1:$F$10 là vùng dữ liệu chứa các mốc làm tròn như mình đã trình bày ở trên
RANDBETWEEN(2,3) là hàm dùng để random việc chọn cột trả trị theo yêu cầu của bạn Chuotdong
1 là dò tìm tương đối.
Cách này có lẽ hơi rườm rà nhưng mình nghĩ nó sẽ thực hiện đúng yêu cầu của tác giả. Ai có cách khác hay hơn thì post lên cho mọi người học hỏi nha.

Chuotdong
20-09-08, 10:47 AM
@BNTT:
Tôi sẽ giải thích cho bạn ngay:



72,1 tại sao lại không làm tròn lên 72 ư, vậy các mốc đặt ra để làm gì ạ ? Các mốc gần 72,1 nhất là 70 và 73

72,1 - 70 và 73- 72,1 cái nào nhỏ hơn thì làm tròn về phía đó tức là làm tròn thành 73.

Trường hợp tôi nói làm tròn lên khi mà giá trị nằm đúng giữa các mốc ví dụ 71,5 thì làm tròn lên 73 hay xuống 70, thì tôi nói là chọn làm tròn lên trong trường hợp này

Như vậy đang xét các mốc như sau 0;3;5;7;10.


16,6 làm tròn thành 15,2 trong file Excel của tôi là tôi vội nên viết nhầm lúc sửa từ mốc lẻ sang (rất xin lỗi) phải là 17.

BNTT
20-09-08, 11:14 AM
OK. Ít ra thì bạn cũng phải nói rõ như vậy (tuy là cũng phải động não một chút).

Sau khi đọc đi đọc lại bài của bạn, tôi hiểu được như sau:

Với các mốc làm tròn 0 - 3 - 5 - 7 (có lẽ không có số 10 đâu, phải không bạn, vì 10 thì giống 0 rồi), với các con số, sau khi "làm tròn", sẽ có con số tận cùng là một trong bốn cái mốc trên?

Có nghĩa là, ví dụ với các con số từ 10.00 đến 19.99, sau khi "làm tròn", sẽ không bao giờ có 11, 12, 14, 16, 18, 19 ? Mà chỉ có 10, 13, 15, và 17 ?

Và nữa:
Nếu con số cần làm tròn, lớn hơn hay bằng điểm giữa của 2 "mốc", thì "làm tròn lên" cho bằng mốc trên? Ngược lại thì "làm tròn xuống" cho bằng mốc dưới?

Tôi làm thử, theo cái hiểu của tôi, bạn cho ý kiến nha:

|
A|
B|

1|
Số cho trước|
Số đã làm tròn theo mốc 0, 3, 5, 7|

2|
17.9|
17|

3|
18.51|
20|

4|
18.56|
20|

5|
11.44|
10|

6|
16.58|
17|

7|
19.53|
20|

8|
19.5|
20|

9|
14.26|
15|

10|
19.26|
20|

11|
18.37|
17|

12|
13.59|
13|

13|
13.77|
13|

14|
15.48|
15|

15|
12.1|
13|

16|
13.65|
13|

17|
13.6|
13|

18|
19.76|
20|

19|
14.15|
15|

20|
13.04|
13|

21|
13.71|
13|

22|
14.18|
15|

23|
19.89|
20|

24|
11.02|
10|

25|
10.39|
10|

26|
10.58|
10|

27|
17.21|
17|

28|
10.47|
10|

Có đúng với ý bạn không ?

Chuotdong
20-09-08, 11:24 AM
Đúng rồi bạn ạ. Bạn có thấy nó là sự mở rộng của hàm ROUND() không ? nhưng dĩ nhiên ko thể dùng hàm round() để xử lý được.

Tôi nghĩ giá trị các mốc (vì hữu hạn) đưa vào list là sử lý được, còn chắc dùng công thức là ổn chứ VBA làm gì, trừ khi cần random kết quả (cái này sẽ trao đổi với các bạn sau).

Sao trang web dạo này vào khó thế, muốn giải thích bạn mà vào mãi mới được.

ndu96081631
20-09-08, 11:43 AM
Tạm thời làm thử 1 đoạn (dưới), còn đoạn trên vẩn chưa hiểu lắm

Chuotdong
20-09-08, 11:50 AM
Tạm thời làm thử 1 đoạn (dưới), còn đoạn trên vẩn chưa hiểu lắm
Bạn cứ nói chỗ nào chưa hiểu. Tôi cũng chỉ nghĩ nó là sự mở rộng của hàm làm tròn thôi: vì thấy cú pháp là ROUND(số cần làm tròn; số thập phân cần làm tròn), nghĩa là hàm round() thì các mốc (thực ra chỉ có 2 mốc) của nó là 0 và 5 hoặc 0 và 0,5 hoặc 0 và 0,05 .v.v...


Đang xem cách bạn giải nhưng cũng chưa hiểu, có gì sẽ hỏi bạn thêm.

cadafi
20-09-08, 12:10 PM
Cột A chứa dữ liệu gốc, Cột B bạn thử công thức này:

B2=INT(A2)-RIGHT(INT(A2),1)+CHOOSE(RIGHT(INT(A2),1)+1,0,0,3,3 ,5,5,7,7,10,10)
Sau đó kéo fill xuống.
Tuy nhiên, công thức này chưa hoàn chỉnh lắm! Các cao thủ sửa dùm nhé!

ndu96081631
20-09-08, 12:38 PM
Bạn cứ nói chỗ nào chưa hiểu. Tôi cũng chỉ nghĩ nó là sự mở rộng của hàm làm tròn thôi: vì thấy cú pháp là ROUND(số cần làm tròn; số thập phân cần làm tròn), nghĩa là hàm round() thì các mốc (thực ra chỉ có 2 mốc) của nó là 0 và 5 hoặc 0 và 0,5 hoặc 0 và 0,05 .v.v...


Đang xem cách bạn giải nhưng cũng chưa hiểu, có gì sẽ hỏi bạn thêm.
Cách của tôi không dùng ROUND
- Đầu tiên tôi đặt name cho Mốc
- Tách số từ hàng đơn vị trở về sau (ví dụ số 16.8 thì sẽ tách lấy số 6.8) để làm Mẩu so sánh
- Dùng Mẩu này so với Mốc, bằng cách trừ Mốc cho Mẩu, kết quả nào nhỏ nhất (hàm MIN)... thì lấy đó làm vị trí xác định
... Đại khái là thế...

BNTT
20-09-08, 12:44 PM
Chưa được, Ca_Dafi ơi.
Theo anh hiểu thì:
Ví dụ con số 18.49, do 8.49 < (7+10)/2 = 8.5, nên nó phải lấy mốc dưới, là "làm tròn xuống" í.
Có nghĩa là 18.49 = 17 chứ không phải bằng 20.

Công thức của Ca_Dafi ra kết quả bằng 20.

Có lẽ phải xem lại cái hàm CHOOSE.

BNTT
20-09-08, 12:56 PM
Cách của tôi không dùng ROUND
- Đầu tiên tôi đặt name cho Mốc
- Tách số từ hàng đơn vị trở về sau (ví dụ số 16.8 thì sẽ tách lấy số 6.8) để làm Mẩu so sánh
- Dùng Mẩu này so với Mốc, bằng cách trừ Mốc cho Mẩu, kết quả nào nhỏ nhất (hàm MIN)... thì lấy đó làm vị trí xác định
... Đại khái là thế...

Em cũng nghĩ như anh.
Đây là một bài toán khá hóc búa.
Do các mốc là 0,3,5,7, trong khi mình lại phải đi so sánh với 10,13,15,17,20,23,27,...,90,93,95,97....890,893,89 5,897, v.v...
Cho nên phải tách cho bằng được con số nguyên cuối cùng cộng với hai con số lẻ sau dấu thập phân, thì mới làm tiếp được.

Có lẽ chúng ta phải làm từ từ, từng bước 1.
Em xin đề nghị công thức này, để tách ra con số có dạng 0.00:

|
A|
B|

1|
Số cho trước|
=IF(A2<10,A1,A1-10*LEFT(A1,LEN(INT(A1))-1))|

2|
76.39|
6.39|

3|
25.76|
5.76|

4|
17.88|
7.88|

5|
70.71|
0.71|

6|
52.05|
2.05|

7|
92.48|
2.48|

8|
49.49|
9.49|

9|
42.29|
2.29|

10|
696.04|
6.04|

11|
721.96|
1.96|

12|
765.21|
5.21|

13|
625.92|
5.92|

14|
272.14|
2.14|

15|
129.21|
9.21|

16|
468.36|
8.36|

17|
926.47|
6.47|

18|
981.03|
1.03|

19|
809.09|
9.09|

20|
138.25|
8.25|

21|
2469.99|
9.99|

22|
9281.2|
1.20|

23|
9510.14|
0.14|

24|
5479.43|
9.43|

25|
195.97|
5.97|

26|
9041.68|
1.68|

27|
6669.56|
9.56|

28|
9952.5|
2.50|

ndu96081631
20-09-08, 01:21 PM
Em cũng nghĩ như anh.
Đây là một bài toán khá hóc búa.
Do các mốc là 0,3,5,7, trong khi mình lại phải đi so sánh với 10,13,15,17,20,23,27,...,90,93,95,97....890,893,89 5,897, v.v...
Cho nên phải tách cho bằng được con số nguyên cuối cùng cộng với hai con số lẻ sau dấu thập phân, thì mới làm tiếp được.

Có lẽ chúng ta phải làm từ từ, từng bước 1.
Em xin đề nghị công thức này, để tách ra con số có dạng 0.00:
Thì bạn xem file tôi gữi ở trên đi... Đã làm theo hướng này đấy
Dùng mãng... Gần gần giống với bài về tham chiếu của bạn đấy... cũng lấy Mẩu so sánh với cả vùng rồi thêm vài "mẹo" nữa để lấy ra kết quả

BNTT
20-09-08, 02:20 PM
Xong! Đúng nhưng chưa ưng ý lắm. Nhờ các bạn xem dùm.


|
A|
B|
C|
D|
E|
F|
G|

1|
Số cho trước|
{=DATA3*10+DATA2}|
Các mốc|
|
Các Name|
Công thức|
Mô tả|

2|
13.34|
13|
0| | | | |

3|
49.57|
50|
3| |MAU|=OFFSET(Sheet1!$C$1,1,0,COUNTA(Sheet1!$C:$C)-1,1)|Các mốc dùng để làm tròn|

4|
96.67|
97|
5.2| | | | |

5|
47.7|
47|
7| |DATA|=OFFSET(Sheet1!$A$1,1,0,COUNTA(Sheet1!$A:$A)-1,1)|Khối dữ liệu cho trước|

6|
103.38|
103|
10| | | | |

7|
24.02|
23| | |DATA1|=ROUND(IF(DATA<10,DATA,DATA-10*LEFT(DATA,LEN(INT(DATA))-1)),2)|Tách hàng đơn vị và 2 số lẻ từ DATA|

8|
86.33|
87| | | | | |

9|
73.38|
73| | |DATA2|=IF(DATA1<(MD+MT)/2,MD,MT)|So sánh xem DATA1 nằm ở đâu trong MAU, để xác định phải lấy mốc trên hay mốc dưới|

10|
45.19|
45.2| | | | | |

11|
363.7|
363| | |DATA3|=LEFT(DATA,LEN(DATA)-LEN(DATA1))|Phần còn lại của DATA sau khi đã tách bớt DATA1|

12|
637.94|
637| | | | | |

13|
531.82|
533| | |MD|=VLOOKUP(DATA1,MAU,1)|Mốc dưới (nhỏ hơn DATA1)|

14|
882.16|
883| | | | | |

15|
259.11|
260| | |MT|=INDEX(MAU,MATCH(VLOOKUP(DATA1,MAU,1),MAU,0)+1 ,1)|Mốc trên (lớn hơn DATA1)|

16|
688.97|
690| | | | | |

17|
804.41|
805.2| | | | | |

18|
346.48|
347| | | | | |

19|
383.75|
383| | | | | |

20|
11.17|
10| | | | | |

21|
341.24|
340| | | | | |

22|
8104.69|
8105.2| | | | | |

23|
9221.81|
9223| | | | | |

24|
4177.96|
4177| | | | | |

25|
8885.89|
8885.2| | | | | |

26|
8450.1|
8450| | | | | |

27|
6847.42|
6847| | | | | |

28|
7148.41|
7147| | | | | |

Với cách này, tha hồ bổ sung thêm các mốc vào (dĩ nhiên là nằm trong khoảng từ 0 đến 10 thôi, phải xếp theo thứ tự từ nhỏ đến lớn, và bắt phải có ít nhất 2 con số: 0 và 10)


-------------------------

@Anh Ndu, tại sao em thay cái công thức trích ra một số hàng đơn vị + 2 con số lẻ của anh thay thế cho cái công thức của em (cho cái DATA1):

Công thức của anh: =RIGHT(INT(DATA),1)+MOD(DATA,1)

Công thức của em: =ROUND(IF(DATA<10,DATA,DATA-10*LEFT(DATA,LEN(INT(DATA))-1)),2)
Cả hai đều ra kết quả giống nhau.

Nhưng nếu dùng cái của anh thì DATA3 của em báo lỗi #VALUE! ?

(DATA3) =LEFT(DATA,LEN(DATA)-LEN(DATA1))

Chuotdong
20-09-08, 04:53 PM
Em cũng nghĩ như anh.
Đây là một bài toán khá hóc búa.
Do các mốc là 0,3,5,7, trong khi mình lại phải đi so sánh với 10,13,15,17,20,23,27,...,90,93,95,97....890,893,89 5,897, v.v...
Cho nên phải tách cho bằng được con số nguyên cuối cùng cộng với hai con số lẻ sau dấu thập phân, thì mới làm tiếp được.

Có lẽ chúng ta phải làm từ từ, từng bước 1.

Đọc lại cách giải của các bạn mình thấy đúng là phức tạp không ngờ. Thực tế bài toán mình phải giải quyết không như vậy, có nghĩa là các mốc nếu chỉ là số nguyên (VDụ: 0;3;5;8 chẳng hạn) thì giá trị dữ liệu cần xử lý cũng luôn chỉ là những số nguyên !, tức là không có phần lẻ: trong dữ liệu cần phải quy tròn không có những số kiểu như 22,5; 30,62; hay 102,4 .....v....v....

Hy vọng bài toán đơn giản đi nhiều và thực tế hơn.

lypt
20-09-08, 05:03 PM
Giả sử có 4 mốc 2, 3, 5, 7 (trong pham vi 10, có thể có mốc 0, các mốc có thể trùng, các mốc có thể lẻ thập phân)
Viết 4 mốc theo thứ tự tăng dần 2, 3, 5, 7 vào A1, B1, C1, D1
Bổ sung thêm một mốc phụ (thực chất là mốc tiếp theo) E1 = A1+10
Số trước khi làm tròn được cho trước tại F1 (và F2, F3, …)
Số sau khi làm tròn (cần tính) nằm tại G1 (và G2, G3, …). Công thức tại G1 :
=INT(F1/10)*10+IF(F1-INT(F1/10)*10<($A$1+$B$1)/2,$A$1,IF(F1-INT(F1/10)*10<($B$1+$C$1)/2,$B$1,IF(F1-INT(F1/10)*10<($C$1+$D$1)/2,$C$1,IF(F1-INT(F1/10)*10<($D$1+$E$1)/2,$D$1,$E$1))))
Copy G1 sang G2, G3, …
Công thức trên đang theo nguyên tắc làm tròn lên.
Nếu làm tròn xuống thì thêm dấu = sau các dấu <; còn nếu không muốn viết dấu = thì viết dấu > nhưng thứ tự tính ngược lại.

lypt
22-09-08, 02:37 PM
Bài toán được giải tổng quát hơn như sau :
Chu kỳ không nhất thiết là 10 mà có thể lớn hơn (hàng trăm, ngàn, …) hay nhỏ hơn (thuộc hàng số lẻ thập phân thứ 2, 3, …), không cần phải số nguyên.
Số lượng mốc thì chưa biết cách tùy ý. Lần này tôi chỉ mở rộng thêm một mốc nữa là 5 mốc. Muốn nhiều mốc hơn thì phải viết thêm. Muốn xài chỉ 4 mốc thì cứ chọn 1 mốc nào đó viết thành 2 mốc giống nhau.
Cụ thể :
Phạm vi (chu kỳ) là 250, viết vào G1 (trước đây là 10 và ngầm hiểu, không viết vào đâu cả; thực ra thì có thể thấy nó trong E1).
5 mốc 10, 30, 70, 140, 180 (yêu cầu các mốc là từ 0 đến 250 (có thể bằng 0, nhưng phải nhỏ hơn 250), các mốc có thể trùng nhau tùy ý (thậm chí cả 5 mốc bằng nhau cũng được), các mốc có thể lẻ thập phân tùy ý).
Viết 5 mốc trên theo thứ tự tăng dần 10, 30, 70, 140, 180 vào A1, B1, C1, D1, E1.
Bổ sung thêm một mốc phụ (thực chất là mốc tiếp theo) F1 = A1+G1
Số trước khi làm tròn cho trước tại H1 (và H2, H3, …).
Số sau khi làm tròn (cần tính) nằm tại I1 (và I2, I3, …). Công thức tại I1 :
=(H1-MOD(H1,$G$1))+IF(MOD(H1,$G$1)<($A$1+$B$1)/2,$A$1,IF(MOD(H1,$G$1)<($B$1+$C$1)/2,$B$1,IF(MOD(H1,$G$1)<($C$1+$D$1)/2,$C$1,IF(MOD(H1,$G$1)<($D$1+$E$1)/2,$D$1,IF(MOD(H1,$G$1)<($E$1+$F$1)/2,$E$1,$F$1)))))
Copy I1 sang I2, I3, ...

So với trước thì công thức lần này sử dụng “MOD(H1,$G$1)” thay vì “F1-INT(F1/10)*10”, và thay “INT(F1/10)*10” thành “H1-MOD(H1,$G$1)”

cadafi
22-09-08, 03:24 PM
Đọc lại cách giải của các bạn mình thấy đúng là phức tạp không ngờ. Thực tế bài toán mình phải giải quyết không như vậy, có nghĩa là các mốc nếu chỉ là số nguyên (VDụ: 0;3;5;8 chẳng hạn) thì giá trị dữ liệu cần xử lý cũng luôn chỉ là những số nguyên !, tức là không có phần lẻ: trong dữ liệu cần phải quy tròn không có những số kiểu như 22,5; 30,62; hay 102,4 .....v....v....

Hy vọng bài toán đơn giản đi nhiều và thực tế hơn.

Với điều kiện sô nguyên như thế bạn có thể dùng công thức của mình cho đơn giản. Ước gì bạn nói rõ từ đầu.

B2=A2-RIGHT(A2,1)+CHOOSE(RIGHT(A2,1)+1,0,0,3,3 ,5,5,7,7,10,10)

huuthang_bd
23-09-08, 04:41 PM
Làm tròn số thập phân với các mốc 0, 3, 5, 7, 10, ... Dùng If kết hợp với Floor. Các bạn xem file đính kèm nha.

Chuotdong
23-09-08, 11:45 PM
Với điều kiện sô nguyên như thế bạn có thể dùng công thức của mình cho đơn giản. Ước gì bạn nói rõ từ đầu.
Nếu là thập phân thì mình nghĩ cũng chỉ việc nhân dữ liệu với 10^n lần rồi sử lý là được chứ nhỉ ?

huuthang_bd
24-09-08, 08:47 AM
Nếu là thập phân thì mình nghĩ cũng chỉ việc nhân dữ liệu với 10^n lần rồi sử lý là được chứ nhỉ ?
Khác nhau chứ bạn. Ví dụ như muốn làm tròn số 2.33 bạn nhân 10^2 = 233. Làm sao có thể dùng Right với Choose để làm tròn theo cách của ca_dafi.
Gửi bạn thêm cách dùng bảng phụ.

sealand
24-09-08, 09:34 AM
Mình thấy yêu cầu sử lý dữ liệu còn có cách khác là dùng các hàm sau:
1/Dùng hàm Int() hàm này cắt các số thập phân và chỉ lấy phần nguyên.
Ví dụ: Int(783.5125)=783

2/Hàm Fixed() hàm này có hỗ trợ làm tròn, duy kết quả trả về dạng text nên phải dùng kết hợp với hàm Value() để chuyển về dạng số
Ví dụ: Fixed(783.5125,0,0)=784
Đổi về dang số Value(Fixed(783.5125,0,0))=784

huuthang_bd
24-09-08, 09:40 AM
Mình thấy yêu cầu sử lý dữ liệu còn có cách khác là dùng các hàm sau:
1/Dùng hàm Int() hàm này cắt các số thập phân và chỉ lấy phần nguyên.
Ví dụ: Int(783.5125)=783

2/Hàm Fixed() hàm này có hỗ trợ làm tròn, duy kết quả trả về dạng text nên phải dùng kết hợp với hàm Value() để chuyển về dạng số
Ví dụ: Fixed(783.5125,0,0)=784
Đổi về dang số Value(Fixed(783.5125,0,0))=784
Vấn đề ở đây là làm tròn. Bạn tách phần nguyên ra như thế có áp dụng được cho cách làm tròn nào của bạn hay không?

ziczicit
03-03-10, 12:53 PM
E mạo muội xin hỏi các bạn. E nghĩ mãi mà không biết phải làm thế nào nữa. Mong các bác giúp e nhé.
Làm tròn:
12=10
14=10
15=20
......
105=110
150=150
163=160
166=170
.........
1114=1110
1125=1130
............
Nếu cứ như vậy thì phải làm thế nào?
Cảm ơn các bác nhiều lắm!

ndu96081631
03-03-10, 12:58 PM
E mạo muội xin hỏi các bạn. E nghĩ mãi mà không biết phải làm thế nào nữa. Mong các bác giúp e nhé.
Làm tròn:
12=10
14=10
15=20
......
105=110
150=150
163=160
166=170
.........
1114=1110
1125=1130
............
Nếu cứ như vậy thì phải làm thế nào?
Cảm ơn các bác nhiều lắm!
Thì cũng dùng hàm ROUND thôi
=ROUND(A1,-1)

khoavu87
03-03-10, 01:04 PM
E mạo muội xin hỏi các bạn. E nghĩ mãi mà không biết phải làm thế nào nữa. Mong các bác giúp e nhé.
Làm tròn:
12=10
14=10
15=20
......
105=110
150=150
163=160
166=170
.........
1114=1110
1125=1130
............
Nếu cứ như vậy thì phải làm thế nào?
Cảm ơn các bác nhiều lắm!
Thêm cách củ chuối này nữa xem sao:
=IF(MOD(A1,10)>=5,INT(A1/10)*10+10,INT(A2)-MOD(A1,10))

dat_butmuc
03-03-10, 01:05 PM
E mạo muội xin hỏi các bạn. E nghĩ mãi mà không biết phải làm thế nào nữa. Mong các bác giúp e nhé.
Làm tròn:
12=10
14=10
15=20
......
105=110
150=150
163=160
166=170
.........
1114=1110
1125=1130
............
Nếu cứ như vậy thì phải làm thế nào?
Cảm ơn các bác nhiều lắm!

Bạn dùng hàm Round xem?
=ROUND("NUMBER",-1)

holmes
13-03-14, 02:34 PM
Phải đăng nhập vào để cảm ơn đáp án ngắn gọn chuẩn xác của bác này (phần lẻ là 2500 thì làm tròn lên thành 5000 là theo đúng quy tắc thông thường - bán làm tròn lên, dưới bán làm tròn xuống như 0,5 thì làm tròn thành 1 vậy. (xin phép 4rum đào mộ tý)

Bạn thử công thức như sau
=ROUND(so*2,-4)/2