Tính loại tiền từ một số tiền

Thảo luận trong 'Ứng dụng Excel' bắt đầu bởi FOV2, 3 Tháng tám 2005.

8,109 lượt xem

  1. FOV2

    FOV2 Thành viên sơ cấp

    Bài viết:
    23
    Đã được thích:
    0
    Nơi ở:
    HCMC
    Chào các bạn!
    Mình có 1 file chuyển từ 1 số tiền ra các loại tiền.

    VD: 250.500 đồng thì gồm có: 2 tờ 100.000 + 1 tờ 50.000 + 1 tờ 500.

    Tuy nhiên, công thức chỉ đúng cho số tiền chẵn đến 500 đồng (như VD trên). Còn như (ví dụ) 250.100, 250.300, 250.600, 250.800 thì lệch 100đ.

    ....
     
    Last edited: 5 Tháng chín 2015
    #1
  2. handung107

    handung107 Thành viên thân thiết

    Bài viết:
    576
    Đã được thích:
    13
    Nơi ở:
    VN
    File này thú vị đấy, bạn hãy gửi cho tôi về handung107@gmail.com nhé. Một ý tưởng của File này đôi khi sẽ trở thành đề tài cho một File khác, cám ơn bạn.
     
    #2
  3. leanhkhoa

    leanhkhoa Thành viên sơ cấp

    Bài viết:
    7
    Đã được thích:
    0
    #3
  4. workman

    workman Thành viên sơ cấp

    Bài viết:
    372
    Đã được thích:
    0
    Nơi ở:
    Ho Chi Minh
    Xài tạm cái này nhé. Đương nhiên chỉ đến hàng trăm thôi.

    Giả sử ô B1 chứa số tiền mà bạn cần chia.

    Ô B5 là số tiền 100,000. Ô B6 là số tiên 50,000 and so on.

    Ô A5: gõ vào 100,000; A6 gõ: 50,000, cho tới ô A13: 200

    Tại ô B5 gõ: =INT(B1/A5)

    Ô B6 kéo xuống gõ:

    =IF(MOD($B$1,200)=0,INT(($B$1-MOD($B$1,1000)- SUMPRODUCT(A$5:A5,B$5:B5))/A6)+(A6=200)*INT(MOD($B$1,1000)/200),IF(MOD($B$1,1000)<500,INT(($B$1-MOD($B$1,1000)-1000-SUMPRODUCT(A$5:A5,B$5:B5))/A6)+(A6=500)+(A6=200)*(INT((MOD($B$1,1000)-300)/200)+7),INT(($B$1-SUMPRODUCT(A$5:A5,B$5:B5))/A6)))

    Chúc bạn vui.
     
    Last edited: 3 Tháng tám 2005
    #4
  5. ForestC

    ForestC Thành viên sơ cấp

    Bài viết:
    377
    Đã được thích:
    1
    Nơi ở:
    E'rywhere
    Trăm bò trăm cỏ, bò đứng ăn năm, loằng ngoằng ăn ba ... linh tinh đây mà. Tuy nhiên vấn đề này tớ chỉ làm được = Pascal hoặc Fox còn dùng Excel thì chưa. Cũng là một vấn đề khá thú vị.
     
    #5
  6. adam_tran

    adam_tran Steel Partner

    Bài viết:
    1,373
    Đã được thích:
    32
    Nơi ở:
    Goooogle
    Công thức làm tròn 500 đồng!

    Ha ha ha, vấn đề này tớ đã gặp khi làm ở công ty TNHH Phú Hữu cách đây chừng 5 năm, tính lương cho 2000 công nhân. Phải tính mỗi loại tiền bao nhiêu đặng ra ngân hàng lãnh cho đủ về chia ra phát. Lúc đó tớ không xài đến tờ 200 vì tớ làm tròn cho 500. Thí dụ <400 thì tớ bỏ, từ 400 đến <700 thì làm tròn lại 500. Từ 700 trở lên thì làm tròn lại 1000. Bạn đang tính lương cho công nhân phải không, tớ cho công thức làm tròn 500 đồng này nhé.
    Giả sử ô A1 là số tiền, B1 nhập công thức làm tròn 500 từ A1:
    =IF(AND(MOD(A1;1000)>=400;MOD(A1;1000)<700);500+INT(A1/1000)*1000;ROUND(A1;-3))
    Về công thức chia tiền, ý bạn workman đúng đấy, ngày xưa tớ dùng công thức mảng. Công thức này thì dễ, chủ yếu bạn chú ý đến phần những địa chỉ hàng-cột nào cần cố định, ($) những địa chỉ nào không, vì sai một chút thì khi copy xuống, tham chiếu của Excel sẽ nhảy tùm lum cả.
    Chúc bạn thành công nhé, tớ còn có file ở đây.
    Nếu phải làm tròn lương đến 200 - 400 - 500 - 600 - 800 - 1000 thì... khó và rắc rối quá, thời này ai xài 200 đâu! Nhưng các cao thủ Excel thấy "bực" thì ra chiêu nhé.
     
    Last edited: 4 Tháng tám 2005
    #6
  7. workman

    workman Thành viên sơ cấp

    Bài viết:
    372
    Đã được thích:
    0
    Nơi ở:
    Ho Chi Minh
    Do phải trả đến cả 100 đồng nên mới sinh chuyện. Hồi đó tôi làm ở ngân hàng nên không thể làm tròn được. Cái hàm này dùng để chi trả chính xác đến 100 đồng cho khách hàng.

    Thuật toán đơn giản thôi: 100=1100-1000
    Do vậy ta trừ 1000 từ số tiền ban đầu. Sau đó cộng thêm 1100=500*1+200*3
     
    #7
  8. HyperVN

    HyperVN <b>Phu hót rác</b>

    Bài viết:
    1,833
    Đã được thích:
    14
    Nơi ở:
    Hải Phòng
    Bài toán này khá thú vị đây, trường hợp số tiền quá lớn thì có thuật toán nào tìm lượng tiền tối ưu không? Nghĩa là sử dụng ít tiền nhất, hay nhiều tiền lẻ nhất, hay tùy thuộc vào lượng tiền từng loại thực có (ví như tiền 500.000đ không quá A tờ, tiền 100.000đ không quá B tờ vv...) bài toán này xương quá.
     
    #8
  9. adam_tran

    adam_tran Steel Partner

    Bài viết:
    1,373
    Đã được thích:
    32
    Nơi ở:
    Goooogle
    Trả 100 đồng thì dễ quá rồi à ơi, ROUND (A1;-2) là xong. Trả 200-400-500-600-800-1000 mới khó!
    Anh HyperVN lại làm khó các bạn rồi. Để các bạn xem nhé, phần này tớ đã gặp thực tế và cũng đã giải quyết rồi. Hì hì, không có trường nào tốt hơn trường thực tế cả.
     
    Last edited: 4 Tháng tám 2005
    #9
  10. workman

    workman Thành viên sơ cấp

    Bài viết:
    372
    Đã được thích:
    0
    Nơi ở:
    Ho Chi Minh
    Adam hiểu nhầm ý tôi rồi. Ý tôi nói là nếu cần phải trả 1100 thì mình cần phải trả ra 1 tờ 500 và 3 tờ 200. Dùng hàm round có nghĩa là mình lấy mất của người là đi 100 đồng rồi còn gì.

    Anh HyperVn đố ác quá. Bữa nay chắc bận lắm không có thời gian giải được, nếu Adam có lời giải thì post lên luôn cho bà con thao khảo với nhé. Đáp án của tôi đưa ra là sử dụng ít giấy bạc nhất.
     
    #10
  11. NgânGiang

    NgânGiang Cố lên! Cố lên...

    Bài viết:
    202
    Đã được thích:
    0
    Nơi ở:
    Trong Mây mù
    Lượng tiền tối ưu hả?
    tớ có ý tưởng thế này nhá:
    Mỗi loại mệnh giá tiền để ở 1 cột.
    Số tờ/đồng tiền ít nhất: Chia cho mệnh giá lớn nhất trước, phần dư chia cho mệnh giá kế tiếp ... đến khi chia hết
    Số tờ/đồng tiền nhiều nhất: Phát toàn tiền mệnh giá nhỏ nhất
    Giới hạn số lượng tiền theo mỗi loại: dùng hàm min/max thêm vào công thức chia ở mỗi loại mệnh giá.
    Tổng hợp lại theo cột bạn sẽ có số lượng tiền cần thiết mỗi loại cho bảng lương hay cái gì gì đó ở mỗi kỳ
     
    #11
  12. workman

    workman Thành viên sơ cấp

    Bài viết:
    372
    Đã được thích:
    0
    Nơi ở:
    Ho Chi Minh
    Thì đấy chính là cái bác FOV2 đã làm đấy thôi. Tôi nghĩ bác FOV2 đã tìm ra solution để tính số tiến tối ưu. Chỉ có một vấn đề nhỏ là thuật toán của bác ấy có vấn đề về thừa thiếu 100 đồng.
     
    #12
  13. workman

    workman Thành viên sơ cấp

    Bài viết:
    372
    Đã được thích:
    0
    Nơi ở:
    Ho Chi Minh
    Tiện tay làm lại file post lên cho các bạn tham khảo luôn. Cái này đảm bảo trả đúng đến hàng trăm, tức là không có chuyện thừa thiếu.
     

    Các file đính kèm:

    #13
  14. FOV2

    FOV2 Thành viên sơ cấp

    Bài viết:
    23
    Đã được thích:
    0
    Nơi ở:
    HCMC
    Chờ mỏi mòn luôn.

    Cám ơn Workman nhiều lắm lắm.
     
    #14
  15. Secret_grasses

    Secret_grasses Thành viên sơ cấp

    Bài viết:
    317
    Đã được thích:
    3
    Nơi ở:
    Ngôi nhà nhỏ trên thảo nguyên.
    Anh workman ơi , em đã xem qua file của anh. Anh còn thiếu loại tiền 500.000đ nữa.
     
    #15
  16. workman

    workman Thành viên sơ cấp

    Bài viết:
    372
    Đã được thích:
    0
    Nơi ở:
    Ho Chi Minh
    Ờ nhỉ. Cảm ơn bạn nhắc nhở nhé. Tôi lạc hậu quá, cứ tưởng đến 100,000 là hết. Tiện tay sửa lại luôn chứ tôi biết chắc các bạn muốn sửa là được ngay.
     

    Các file đính kèm:

    #16
  17. hungmx

    hungmx Thành viên sơ cấp

    Bài viết:
    2
    Đã được thích:
    0
    Nơi ở:
    SGN
    Mình cũng cần tìm số tờ mỗi loại tương tự nhưng không phải tiền mà là tờ thể hiện số cổ phần:

    VD: Có 9 tờ thể hiện số cổ phần khác nhau: 10000, 5000, 1000, 500, 100, 50, 10, 5, 1
    Một người có 16796 cổ phần thì họ sẽ được 1 tờ 10000, 1 tờ 5000, 1 tờ 1000, 1 tờ 500, 2 tờ 100, 1 tờ 50, 4 tờ 10, 1 tờ 5 và 1 tờ 1.

    Rất mong các bác hướng dẫn giúp như cách làm trong file đính kèm của bác Workman. Mình dốt Excel quá nên thấy hàm trong file này là rối mù luôn. :freddy:

    Xin cảm ơn nhiều (mình đang rất cần).
     
    #17
  18. QDuc

    QDuc Thành viên thân thiết

    Bài viết:
    254
    Đã được thích:
    18
    Nơi ở:
    Biển khơi
    Bạn thử kiểm hàm tự tạo sau, nha!

     

    Các file đính kèm:

    Last edited: 29 Tháng năm 2007
    #18
  19. hungmx

    hungmx Thành viên sơ cấp

    Bài viết:
    2
    Đã được thích:
    0
    Nơi ở:
    SGN
    Do cần gấp nên mình đã sử dụng file attach của bác workman, rồi làm theo kiểu "nông dân học":

    Số tờ 10000 (ô B1): =+INT(A1/10000)
    Số tờ 5000 (ô C1): =+INT(A1/5000)-B1*2
    Số tờ 1000 (ô D1): =+INT(A1/1000)-B1*10-C1*5
    ....

    Cũng may là đúng do không có mệnh giá 2000, 200, 20, 2.

    Cảm ơn Bác QDuc nhiều. Lần tới sẽ sử dụng file của bác. :)
     
    #19

Chia sẻ trang này