Hỏi về hàm lấy phần nguyên và phần dư của một phép chia

Liên hệ QC

feelingyes

Thành viên tiêu biểu
Tham gia
24/9/07
Bài viết
458
Được thích
395
Nghề nghiệp
Economic
Chào anh chị
Ví dụ em có phép tính 32/16 = 1 dư 15
Và câu hỏi của em là em dùng hàm nào để lấy số nguyên 32/16 = 1
Cám ơn anh chị
 
feelingyes đã viết:
Chào anh chị
Ví dụ em có phép tính 32/16 = 1 dư 15
Và câu hỏi của em là em dùng hàm nào để lấy số nguyên 32/16 = 1
Cám ơn anh chị
32/16=2 cơ mà làm sao lại bằng 1 được
Chắc là 31/16 = 1 dư 15 chứ
Bạn dùng hàm = Int(31/16) = 1
Thân.
 
Tôi có cách này : tại ô kết quả bạn ghi : =INT(31/16)&" dư "&MOD(31,16)
 
Hàm Int lấy phần nguyên của số dương chứ
Int(-31/16) thì = - 2
 
Hàm Int lấy phần nguyên của số dương chứ
Int(-31/16) thì = - 2
Đúng rồi bác ạ. Vấn đề này em đã nói nhiều lần trên diễn đàn, và trong cuộc thi trắc nghiệm hôm Sinh Nhật cũng có một câu nhắc lại vấn đề này.

Các bạn đừng nghĩ rằng INT là hàm lấy phần nguyên của một phép chia. Điều này là sai. Nó chỉ "có vẻ đúng" khi tham số của INT là một số dương. Vì theo định nghĩa, INT là HÀM LÀM TRÒN XUỐNG MỘT SỐ ĐẾN SỐ NGUYÊN GẦN NHẤT.

Còn hàm dùng để lấy phần nguyên của một phép chia, là hàm QUOTIENT.

Làm quen với QUOTIENT, các bạn sẽ thấy hàm MOD và QUOTIENT tương đương nhau về cú pháp: =Hàm(số chia, số bị chia), chỉ khác là MOD thì lấy phần dư, QUOTIENT thì lấy phần nguyên. Trong khi dùng INT thì buộc phải gõ thêm dấu chia vào đó, vì tham số của INT là một con số, chứ nó không biết số chia, số bị chia là gì hết.
 
Lần chỉnh sửa cuối:
INT là HÀM LÀM TRÒN MỘT SỐ ĐẾN SỐ NGUYÊN GẦN NHẤT
Cái định nghĩa này có vẻ không chính xác. Nếu nói như định nghĩa này thì INT(0.9) phải là 1 chứ ở đây kết quả là 0
Theo tôi thì đúng nhất phải định nghĩa là "INT là hàm làm tròn xuống số nguyên gần nhất"
 
còn nếu muốn lấy cả phần nguyên và dư thì lồng cả hai hàm hả mấy bạn,ví dụ đề ra : đổi từ 10 ngày sang 1 tuần 3 ngày thì làm sao?
 
Tuần = INT(10/7) = 1
Ngày dư = Mod(10,7) = 3
Rồi đổi số 10 thành vị trí một ô nào đó là xong. VD: =MOD(C6,7) ; =INT(C6/7)
Vậy đó!
Chúc vui.
 
Bạn dùng toán tử & để nối chúng lại với nhau
Ví dụ: cell A1 chứa số ngày (bằng 10 chẳng hạn) và bạn có:
=INT(A1/7) là số tuần
=MOD(A1,7) là số ngày lẻ
Vậy để nối chúng lại ta dùng:
PHP:
=INT(A1/7) & " tuần và " & MOD(A1,7) & " ngày lẻ"
Bạn thử xem!
 
Chỉnh sửa lần cuối bởi điều hành viên:
Bạn dùng toán tử & để nối chúng lại với nhau
Ví dụ: cell A1 chứa số ngày (bằng 10 chẳng hạn) và bạn có:
=INT(A1/7) là số tuần
=MOD(A1,7) là số ngày lẻ
Vậy để nối chúng lại ta dùng:
PHP:
=INT(A1/7) & " tuần và " & MOD(A1,7) & " ngày lẻ"
Bạn thử xem!

ví dụ muốn chuyển 40ngày thành 1 tháng 1 tuần và 3 ngày, có thể viết như sau:
=INT(D1/30)&" tháng "&INT(MOD(D1;30)/7)&" tuần và "&MOD(INT(MOD(D1;30)/7);7)&" ngày lẻ"
trong đó mình mặc định d1 là 40, mỗi tháng 30 ngày.
Nếu tính đủ ngày trong tháng thì cách viết trên sẽ sai.(có tháng 28 ngày và có tháng 31 ngày)
 
ví dụ muốn chuyển 40ngày thành 1 tháng 1 tuần và 3 ngày, có thể viết như sau:
=INT(D1/30)&" tháng "&INT(MOD(D1;30)/7)&" tuần và "&MOD(INT(MOD(D1;30)/7);7)&" ngày lẻ"
trong đó mình mặc định d1 là 40, mỗi tháng 30 ngày.
Nếu tính đủ ngày trong tháng thì cách viết trên sẽ sai.(có tháng 28 ngày và có tháng 31 ngày)
Công thức của bạn sai nhé.
Mà đề tài này đã lâu rồi, vấn đề đã được giải quyết rồi...
 
ví dụ muốn chuyển 40ngày thành 1 tháng 1 tuần và 3 ngày, có thể viết như sau:
=INT(D1/30)&" tháng "&INT(MOD(D1;30)/7)&" tuần và "&MOD(INT(MOD(D1;30)/7);7)&" ngày lẻ"
trong đó mình mặc định d1 là 40, mỗi tháng 30 ngày.
Nếu tính đủ ngày trong tháng thì cách viết trên sẽ sai.(có tháng 28 ngày và có tháng 31 ngày)

Cái này thì đương nhiên, đây là các Bác ấy đang lấy các ví dụ giả định về số thôi mà.
Còn muốn chính xác thì theo tôi nghĩ phải tùy trường hợp nào cụ thể, các cao thủ trên diễn đàn giải quyết gọn ơ !
Nên đừng băn khoăn đúng sai về các ví dụ trên và trường hợp bạn nêu ra !
 
Xin lỗi, trong công thức trên mình viết phần tính ngày lẻ bị sai, trong trường hợp số tuần nhỏ hơn 1(sẽ làm tròn xuống 0) thì ngày cũng bằng 0. Bạn nào biết cách viết đúng xin chỉ giùm. Thanks
 
Xin lỗi, trong công thức trên mình viết phần tính ngày lẻ bị sai, trong trường hợp số tuần nhỏ hơn 1(sẽ làm tròn xuống 0) thì ngày cũng bằng 0. Bạn nào biết cách viết đúng xin chỉ giùm. Thanks

Dùng tạm cái dài dài này, cũng theo kiểu của bạn - nhưng chỉ sửa lại phần logic số học thôi?
PHP:
=INT(D1/30)&" tháng "&INT(MOD(D1,30)/7)&" tuần và "&MOD(D1,INT(D1/30)*30+INT(MOD(D1,30)/7)*7)&" ngày lẻ"
 
Dùng tạm cái dài dài này, cũng theo kiểu của bạn - nhưng chỉ sửa lại phần logic số học thôi?
PHP:
=INT(D1/30)&" tháng "&INT(MOD(D1,30)/7)&" tuần và "&MOD(D1,INT(D1/30)*30+INT(MOD(D1,30)/7)*7)&" ngày lẻ"
Không cần phức tạp như vậy đâu, lồng 2 hàm MOD() vào nhau là được rồi. Mà công thức của bạn bị sai nếu số ngày nhỏ hơn 7.
Mã:
=INT(D1/30)&" tháng "&INT(MOD(D1,30)/7)&" tuần và "&MOD(MOD(D1,30),7)&" ngày lẻ"
 
hàm MOD và toán tử &

trong excel mình đã làm một số thao tác như sau:
Từ số liệu thô (mình lấy từ Nova) mình có cột lý trình của cọc là: 0; 10.23; ...; 1035.76;...
Để hiển thị được theo dạng: Km[x]+[y] trong đó:
x: là Km được tính bằng số hàng ngàn
y: là số mét lẻ
- mình dùng hàm rounddown() hoặc int() để tách lấy x
- dùng hàm mod() để tách lấy y
- dùng cả 2 phương pháp (toán tử & và hàm concatenate()) để nối "Km",x,y nhưng đều bị lỗi là có một số hàng xuất hiện thêm phía sau một dãy số lẻ
Ai giúp mình với ! HELP ME !+-+-+-+
Lưu ý là số liệu thô của mình chỉ lẻ 2 số!
mình gửi kèm file đây!
Nếu "tiện tay" có thể gửi bài trả lời đến luckyman1805@yahoo.com
 

File đính kèm

  • File-dinh-kem.rar
    29.7 KB · Đọc: 39
Lần chỉnh sửa cuối:
trong excel mình đã làm một số thao tác như sau:
Từ số liệu thô (mình lấy từ Nova) mình có cột lý trình của cọc là: 0; 10.23; ...; 1035.76;...
Để hiển thị được theo dạng: Km[x]+[y]...

Chưa kịp down file của bạn, nhưng bạn áp dụng công thức sau:
Với A1 chứa giá trị
thì ô lấy kết quả dùng công thức sau

="Km"&TEXT(INT(A1),"000")&"+"&TEXT(100*(A1-INT(A1)),"00")

hoặc

="Km"&TEXT(INT(A1),"000+")&TEXT(100*(A1-INT(A1)),"00")
 
Lần chỉnh sửa cuối:
trong excel mình đã làm một số thao tác như sau:
Từ số liệu thô (mình lấy từ Nova) mình có cột lý trình của cọc là: 0; 10.23; ...; 1035.76;...
Để hiển thị được theo dạng: Km[x]+[y] trong đó:
x: là Km được tính bằng số hàng ngàn
y: là số mét lẻ
- mình dùng hàm rounddown() hoặc int() để tách lấy x
- dùng hàm mod() để tách lấy y
- dùng cả 2 phương pháp (toán tử & và hàm concatenate()) để nối "Km",x,y nhưng đều bị lỗi là có một số hàng xuất hiện thêm phía sau một dãy số lẻ
Ai giúp mình với ! HELP ME !+-+-+-+
Lưu ý là số liệu thô của mình chỉ lẻ 2 số!
mình gửi kèm file đây!
Nếu "tiện tay" có thể gửi bài trả lời đến luckyman1805@yahoo.com
Công thức bạn đang dùng là:
Mã:
=CONCATENATE($G$5,ROUNDDOWN(B6/1000,0),"+ ",[COLOR=#ff0000][B]H6[/B][/COLOR])
Mà H6 lại là kết quả từ hàm MOD ---> Trong 1 vài trường hợp, hàm này cho kết quả không chính xác. vậy ta lồng thêm hàm ROUND vào là được rồi
Mã:
=CONCATENATE($G$5,ROUNDDOWN(B6/1000,0),"+ ",[COLOR=#ff0000][B]ROUND(H6,5)[/B][/COLOR])
 
cam on ndu96081631, bạn đã giải quyết đúng vấn đề của mình.
nhưng vấn đề đặt ra là: Khi nào thì hàm MOD cho kết quả sai vậy.
Và nếu mình muốn có một kết quả "lấy phần dư" luôn đúng thì phải dùng hàm gì nhỉ?!
Ban vodoi2x thì đã hiểu sai ý mình, chắc lĩnh vực của bạn ko phải là "cầu đường"
Dù sao cũng cảm ơn ý kiến của bạn, mình sẽ dùng hàm text cho trường hợp hữu dụng sau này
 
cam on ndu96081631, bạn đã giải quyết đúng vấn đề của mình.
nhưng vấn đề đặt ra là: Khi nào thì hàm MOD cho kết quả sai vậy.
Và nếu mình muốn có một kết quả "lấy phần dư" luôn đúng thì phải dùng hàm gì nhỉ?!
Ban vodoi2x thì đã hiểu sai ý mình, chắc lĩnh vực của bạn ko phải là "cầu đường"
Dù sao cũng cảm ơn ý kiến của bạn, mình sẽ dùng hàm text cho trường hợp hữu dụng sau này
Không riêng gì hàm MOD() mà khi làm việc với các số lẻ đôi khi kết quả tính của Excel có sai số. Tuy nhiên, những sai số này khá nhỏ, thường chỉ vài phần triệu tỷ. Vì vậy, bạn có thể khắc phục bằng cách đưa vào hàm ROUND() với khoản 10 số lẻ vì thường nhu cầu của ta không đến mức đó.
Mã:
=ROUND(MOD(A,B),10)
 
Web KT
Back
Top Bottom