Công thức thỏa mãn các điều kiện của cột và dòng

Liên hệ QC

dat_butmuc

weitə r ə'pɔn prɔvidəns
Tham gia
22/5/08
Bài viết
1,763
Được thích
2,227
Nghề nghiệp
Audit, Control, Project M
Nhờ các bác giúp đỡ để tính toán và chọn lựa cho trường hợp này: (file đính kèm)
Có một số mặt hàng bán theo diện chọn người có giá "thầu" cao nhất với các điều kiện trong cột và dòng như sau:
- Chỉ được phép mua số lượng tối đa = số lượng tồn- Chọn người đăng ký mua với giá cao nhất rồi đến giá thấp hơn kế tiếp- Giá thầu phải lớn hơn hoặc bằng giá khởi điểm- Nếu các người mua bỏ thầu bằng nhau thì chọn ngẫu nhiên

CHÂN THÀNH CÁM ƠN
 

File đính kèm

Tính toán/ lựa chọn tại cột "Người trúng thầu" thỏa mãn các điều kiện sau: Điều kiện: Chỉ được phép mua số lượng tối đa = số lượng tồn

1-Chọn người đăng ký mua với giá cao nhất rồi đến giá thấp hơn kế tiếp

2-Giá thầu phải lớn hơn hoặc bằng giá khởi điểm

3-Nếu các người mua bỏ thầu bằng nhau thì chọn ngẫu nhiên

Mấy cái điều kiện trên thì dễ thôi, Theo mình mục 3, nếu người mua bỏ thầu bằng nhau thì chọn người nộp hồ sơ thầu sớm nhất.
 
mấy cái điều kiện trên thì dễ thôi, theo mình mục 3, nếu người mua bỏ thầu bằng nhau thì chọn người nộp hồ sơ thầu sớm nhất.


bác dosnet có thể chỉ rõ hơn bằng công thức trên file đính kèm được không?
Thanks !
 
Nhờ các bác giúp đỡ để tính toán và chọn lựa cho trường hợp này: (file đính kèm)
Có một số mặt hàng bán theo diện chọn người có giá "thầu" cao nhất với các điều kiện trong cột và dòng như sau:
- Chỉ được phép mua số lượng tối đa = số lượng tồn- Chọn người đăng ký mua với giá cao nhất rồi đến giá thấp hơn kế tiếp- Giá thầu phải lớn hơn hoặc bằng giá khởi điểm- Nếu các người mua bỏ thầu bằng nhau thì chọn ngẫu nhiên

CHÂN THÀNH CÁM ƠN
Bạn xem thử nhé. Bài này không đơn giản.
 

File đính kèm

Bạn xem thử nhé. Bài này không đơn giản.
Dosnet chưa xem kỹ nên phán đoán hơi vội, chính xác là không đơn giản vì nhiều lý do (cách sắp xếp Data base, gộp rất nhiều đk)

- Bài của bác huuthang_bd mới chỉ chọn được một người cao nhất.

--------
To dat_butmuc: Nếu người đặt mua giá cao nhất mà lượng đặt mua > lượng tồn nghiễm nhiên người cao nhất được mua hết, trong trường hợp nhỏ hơn thì dành quyền ưu tiên tiếp theo.
 
Dosnet chưa xem kỹ nên phán đoán hơi vội, chính xác là không đơn giản vì nhiều lý do (cách sắp xếp Data base, gộp rất nhiều đk)

- Bài của bác huuthang_bd mới chỉ chọn được một người cao nhất.

--------
To dat_butmuc: Nếu người đặt mua giá cao nhất mà lượng đặt mua > lượng tồn nghiễm nhiên người cao nhất được mua hết, trong trường hợp nhỏ hơn thì dành quyền ưu tiên tiếp theo.
Thì tôi chỉ làm theo yêu cầu của tác giả thôi.
Nếu người ta mua 2 cái mà mình chỉ có 1 cái thì đương nhiên là mình bán nhưng chắc gì họ đã mua. Vì mua có 2 cái tủ lạnh mà mua chỗ này một cái chỗ kia một cái thì mấy ai chịu. Trong khi họ trả giá cao nữa, đi tìm một cửa hàng khác mua tất cả các sản phẩm không khó.
Chờ xem ý kiến tác giả. Nếu bây giờ làm có khi lại tốn công vô ích.
 
Thì tôi chỉ làm theo yêu cầu của tác giả thôi.
Nếu người ta mua 2 cái mà mình chỉ có 1 cái thì đương nhiên là mình bán nhưng chắc gì họ đã mua. Vì mua có 2 cái tủ lạnh mà mua chỗ này một cái chỗ kia một cái thì mấy ai chịu. Trong khi họ trả giá cao nữa, đi tìm một cửa hàng khác mua tất cả các sản phẩm không khó.
Chờ xem ý kiến tác giả. Nếu bây giờ làm có khi lại tốn công vô ích.


Cám ơn Bác huuthang_bd & Dosnet,
Bài của huuthang_bd chỉ mới đưa ra điều kiện cho người trả giá lớn nhất và đúng như ý của bác Dosnet hiểu "To dat_butmuc: Nếu người đặt mua giá cao nhất mà lượng đặt mua > lượng tồn nghiễm nhiên người cao nhất được mua hết, trong trường hợp nhỏ hơn thì dành quyền ưu tiên tiếp theo.
Như thế này các Bác ạ:
- Ta nên hiểu là số lượng tồn cần bán hết và người mua cần mua sẽ được mua(vì hiểu giá ở đây nhỏ hơn giá các cửa hàng khác) nên mình muốn bán theo số lượng tồn còn lại thỏa mãn các điều kiện đã nêu.
- Đây là đang lấy trường hợp người mua đăng ký một cái, nếu người mua đăng ký 02, 03...hoặc với giá khác nhau nhưng vẫn thỏa mãn điều kiện nữa thì mình vẫn phải bán và bán với giá chọn từ cao xuống thấp cho đến khi hết hàng thì thôi.

=> Đúng là data cần nhiều điều kiện mình chưa thể làm được, vì vậy; mong Bác huuthang_bd & Dosnet cũng như các cao thủ khác xuống tay giúp đỡ.
Chân thành cám ơn,
 
Cám ơn Bác huuthang_bd & Dosnet,
Bài của huuthang_bd chỉ mới đưa ra điều kiện cho người trả giá lớn nhất và đúng như ý của bác Dosnet hiểu "To dat_butmuc: Nếu người đặt mua giá cao nhất mà lượng đặt mua > lượng tồn nghiễm nhiên người cao nhất được mua hết, trong trường hợp nhỏ hơn thì dành quyền ưu tiên tiếp theo.
Như thế này các Bác ạ:
- Ta nên hiểu là số lượng tồn cần bán hết và người mua cần mua sẽ được mua(vì hiểu giá ở đây nhỏ hơn giá các cửa hàng khác) nên mình muốn bán theo số lượng tồn còn lại thỏa mãn các điều kiện đã nêu.
- Đây là đang lấy trường hợp người mua đăng ký một cái, nếu người mua đăng ký 02, 03...hoặc với giá khác nhau nhưng vẫn thỏa mãn điều kiện nữa thì mình vẫn phải bán và bán với giá chọn từ cao xuống thấp cho đến khi hết hàng thì thôi.

=> Đúng là data cần nhiều điều kiện mình chưa thể làm được, vì vậy; mong Bác huuthang_bd & Dosnet cũng như các cao thủ khác xuống tay giúp đỡ.
Chân thành cám ơn,

Bạn xem file để tham khảo, khá phức tạp và rắc rối. Nếu số lượng hồ sơ thầu lớn, e rằng phải tìm cách khác. Nhờ các bạn góp ý thêm với bài này. Dosnet thấy đây là một bài toán thật sự khó nếu làm bằng công thức.
-------
E mượn cái Name "Rng" của bác Huuthang_bd để làm cho nhanh.
 

File đính kèm

Bạn xem file để tham khảo, khá phức tạp và rắc rối. Nếu số lượng hồ sơ thầu lớn, e rằng phải tìm cách khác. Nhờ các bạn góp ý thêm với bài này. Dosnet thấy đây là một bài toán thật sự khó nếu làm bằng công thức.
-------
E mượn cái Name "Rng" của bác Huuthang_bd để làm cho nhanh.


CÁM ƠN BÁC DOSNET NHIỀU NHÉ !
Nhưng có một vài khúc mắc, ví dụ như trường hợp:
L Thắng thầu, được quyền mua 2 Chỉ đăng ký mua 1
R Thắng thầu, được quyền mua 5 Chỉ đăng ký mua 1


Bác khắc phục được lỗi trên không, vì có người chỉ muốn mua số lượng có hạn mặc dù số lượng tồn lớn hơn?
 
Lần chỉnh sửa cuối:
CÁM ƠN BÁC DOSNET NHIỀU NHÉ !
Nhưng có một vài khúc mắc, ví dụ như trường hợp:
L Thắng thầu, được quyền mua 2 Chỉ đăng ký mua 1
R Thắng thầu, được quyền mua 5 Chỉ đăng ký mua 1


Bác khắc phục được lỗi trên không, vì có người chỉ muốn mua số lượng có hạn mặc dù số lượng tồn lớn hơn?
Xem thử được chưa nhé. Thứ tự ưu tiên như sau:
1. Giá thầu
2. Thời gian đăng ký
3. Số lượng đăng ký
4. Được nhập trước (dòng trên được ưu tiên hơn)

Lưu ý: Thời gian đăng ký phải nhập chẵn phút. Nếu muốn tính theo giây thì phải yêu cầu giá thầu chẵn 1.000 tôi sẽ sửa lại công thức.
 

File đính kèm

CÁM ƠN BÁC DOSNET NHIỀU NHÉ !
Nhưng có một vài khúc mắc, ví dụ như trường hợp:
L Thắng thầu, được quyền mua 2 Chỉ đăng ký mua 1
R Thắng thầu, được quyền mua 5 Chỉ đăng ký mua 1


Bác khắc phục được lỗi trên không, vì có người chỉ muốn mua số lượng có hạn mặc dù số lượng tồn lớn hơn?
Bạn dùng tạm file này.
 

File đính kèm

Trong thực tế không có trường hợp đó bác ah, ít nhất thời gian nộp hồ sơ này cũng nhanh (chậm) hơn hồ sơ kia một vài phút chứ.
Không có gì là không thể hết bạn à. Ví dụ như bạn có 2 bàn nhận hồ sơ thì chuyện có 2 nhà thầu nộp hồ sơ cùng giờ là chuyện bình thường. Hoặc họ không theo dõi theo giờ mà chỉ theo dõi ngày nộp hồ sơ. Còn giá thầu bằng nhau thì khỏi bàn rồi.
 
Cám ơn các Bác đã giúp đỡ rất nhiệt tình,

Nhưng bây giờ mình muốn thêm một điều kiện nữa là;
- Mình đã Unmerge cells các cột
- Mặt hàng và người mua, thời gian sắp xếp không theo quy tắc nhất định
- Vì người mua (bỏ thầu) rất nhiều, phát sinh liên tục và đăng ký qua mail nên mình chỉ muốn copy & paste xuống phía dưới...nếu có phát sinh?

=> Làm sao công thức tự động chọn khi mình paste một người mua(bỏ thầu) nào đó nếu thỏa mãn điều kiện đã nêu?
 

File đính kèm

Cám ơn các Bác đã giúp đỡ rất nhiệt tình,

Nhưng bây giờ mình muốn thêm một điều kiện nữa là;
- Mình đã Unmerge cells các cột
- Mặt hàng và người mua, thời gian sắp xếp không theo quy tắc nhất định
- Vì người mua (bỏ thầu) rất nhiều, phát sinh liên tục và đăng ký qua mail nên mình chỉ muốn copy & paste xuống phía dưới...nếu có phát sinh?

=> Làm sao công thức tự động chọn khi mình paste một người mua(bỏ thầu) nào đó nếu thỏa mãn điều kiện đã nêu?

- Thứ nhất: Nếu để ý bạn thấy rằng công thức trong file của Dosnet và của bác Huuthang_bd rất phức tạp, phải dùng đến name động và công thức mảng để khoanh vùng dữ liệu. Việc phân bố giải rác data gốc sẽ làm tình hình trở lên khó khăn hơn rất nhiều. Thay vì như vậy, sau khi đã kết thúc thời gian nộp hồ sơ, bạn cần tổng hợp và phân nhóm theo mã hàng (chắc làm hoàn thành trong 3s-Chọn cả vùng data và ấn Sort là xong) để lọc khách hàng trúng thầu, việc làm này chỉ tốn rất ít thời gian nhưng sẽ đỡ mệt nhọc rất nhiều (thậm chí là không thể làm được).

- Thứ 2: Nếu danh sách mặt hàng có sẵn, thay vì Paste tùy ý vào dòng, bạn có thể paste theo đúng nhóm mã hàng (ở cuối nhóm) sau đó kéo công thức, bạn sẽ có kết quả ngay (name động sẽ tự khoanh nhóm khi bạn paste)

- Vài lời đóng góp, chúc công ty bán được hàng giá cao!
 
Lần chỉnh sửa cuối:
Cám ơn các Bác đã giúp đỡ rất nhiệt tình,

Nhưng bây giờ mình muốn thêm một điều kiện nữa là;
- Mình đã Unmerge cells các cột
- Mặt hàng và người mua, thời gian sắp xếp không theo quy tắc nhất định
- Vì người mua (bỏ thầu) rất nhiều, phát sinh liên tục và đăng ký qua mail nên mình chỉ muốn copy & paste xuống phía dưới...nếu có phát sinh?

=> Làm sao công thức tự động chọn khi mình paste một người mua(bỏ thầu) nào đó nếu thỏa mãn điều kiện đã nêu?
Lẽ ra bạn trình bày rõ ràng, chính xác yêu cầu của bạn ngay từ đầu. Bạn là mất thời gian của mọi người quá. Vần đề này đã được nhắc nhở nhiều lần rồi.
Tự nhiên thấy công sức mình bỏ ra hoàn toàn vô ích. Nản.
 

File đính kèm

Dat_butmuc chú ý với bài sau cùng của bác Huuthang_bd, muốn copy thêm dữ liệu được thì phải sửa lại vùng data trong công thức một chút. Ví dụ như Dosnet mở rộng đến 1000 dòng.

PHP:
J3=MAX(MIN(D3-SUMPRODUCT(--($C$3:$C$1000=C3),$E$3:$E$1000,--($H$3:$H$1000>=F3),--($H$3:$H$1000*100-$G$3:$G$1000+$E$3:$E$1000/1000-ROW($C$3:$C$1000)/10000>H3*100-G3+E3/100-ROW()/10000)),E3),0)*(H3>=F3)

Với trường hợp quá nhiều dữ liệu, công thức mảng sẽ chạy chậm, bạn có thể thay thế $C$3:$C$1000 bằng một mảng động.

DATA=OFFSET($C$3,,,COUNTA($C$3:$C$1000))

Các vùng dữ liệu thuộc cột E, G, H bạn chỉ việc OFFSET(DATA,,..) là xong.
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom