Đăng ký học cùng GPE tháng 10 - TPHCM

Đăng ký học cùng GPE tháng 11 - TPHCM

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

Thảo luận trong 'Hàm và công thức Excel' bắt đầu bởi feelingyes, 11 Tháng một 2008.

  1. feelingyes

    feelingyes Thành viên tiêu biểu

    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ị
     
  2. salam

    salam Thành viên gắn bó

    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.
     
  3. kongcom

    kongcom Thành viên hoạt động

    Tôi có cách này : tại ô kết quả bạn ghi : =INT(31/16)&" dư "&MOD(31,16)
     
  4. le tin

    le tin Học mãi

    Hàm Int lấy phần nguyên của số dương chứ
    Int(-31/16) thì = - 2
     
  5. BNTT

    BNTT Bùi Nguyễn Triệu Tường

    Đú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: 16 Tháng bảy 2009
  6. huuthang_bd

    huuthang_bd Thay thái độ đổi cuộc đời

    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"
     
  7. thuongnguyen89

    thuongnguyen89 Thành viên mới

    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?
     
  8. Pozsi

    Pozsi Thành viên hoạt động

    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.
     
  9. ndu96081631

    ndu96081631 Ăn cùng GPE, Ở cùng GPE, Sống cùng GPE Staff Member Super Moderator

    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: 20 Tháng chín 2009
  10. duongmanhquan

    duongmanhquan Thành viên hoạt động

    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)
     
  11. huuthang_bd

    huuthang_bd Thay thái độ đổi cuộc đời

    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...
     
  12. dat_butmuc

    dat_butmuc weitə r ə'pɔn prɔvidəns

    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 !
     
  13. duongmanhquan

    duongmanhquan Thành viên hoạt động

    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
     
  14. dat_butmuc

    dat_butmuc weitə r ə'pɔn prɔvidəns

    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ẻ"
     
  15. huuthang_bd

    huuthang_bd Thay thái độ đổi cuộc đời

    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ẻ"
     
  16. hiepttr

    hiepttr Thành viên mới

    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
     

    Các file đính kèm:

    Lần chỉnh sửa cuối: 21 Tháng bảy 2011
  17. vodoi2x

    vodoi2x Nothing & Nothing

    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: 21 Tháng bảy 2011
  18. ndu96081631

    ndu96081631 Ăn cùng GPE, Ở cùng GPE, Sống cùng GPE Staff Member Super Moderator

    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])
     
  19. hiepttr

    hiepttr Thành viên mới

    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
     
  20. huuthang_bd

    huuthang_bd Thay thái độ đổi cuộc đời

    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)
     

Chia sẻ trang này