Tôi đọc bài của bạn từ đầu đến giờ ;góp ý với bạn
Theo mình Bạn nên đưa ra hết các điều kiện theo thực tế bạn cần xử lý, tránh mỗi lần lại són ra 1 điều kiện kiểu ...dắt, làm như vậy tốn thời gian của mọi người.
Em cảm ơn góp ý của anh/chị xin ghi nhận, Thực sự tại một thời điểm em cũng chưa nghĩ ra hết và excel của em cũng hữu hạn ạ, trong ứng dụng em mới thấy phát sinh nhiều vấn đề nên em mới trao đổi. Nên cũng hơi "Xoắn" anh/chị.
Cảm ơn anh/chị đã theo dõi bài viết.
Em chưa hiểu công thức của anh, nhờ anh giải thích thêm ạ!
Về tổng quát chung em thấy hình như nó là 1 biến thể "lambda" của Lookup (2;1/( mảng các điều kiện 1)/ (mảng điều kiện n); mảng kết quả)
Nhưng khi đi vào chi tiết công thức, em chưa hiểu cái khúc bôi đỏ này =LOOKUP($K3;IF(MATCH(BangGia!$D$2:$D$32;BangGia!$D$2:$D$32;0)<>ROW($1:$100);BangGia!$H$2:$H$32;1)/..........
* đoạn MATCH(BangGia!$D$2:$D$32;BangGia!$D$2:$D$32;0)<>ROW($1:$100) : có phải là nó sẽ ra {0;0;0;0;0;0;0;0....1;1;1} để làm gì vậy anh?
Rất Mong anh giải thích thêm về công thức này
Cảm ơn anh
Em chưa hiểu công thức của anh, nhờ anh giải thích thêm ạ!
Về tổng quát chung em thấy hình như nó là 1 biến thể "lambda" của Lookup (2;1/( mảng các điều kiện 1)/ (mảng điều kiện n); mảng kết quả)
Nhưng khi đi vào chi tiết công thức, em chưa hiểu cái khúc bôi đỏ này =LOOKUP($K3;IF(MATCH(BangGia!$D$2:$D$32;BangGia!$D$2:$D$32;0)<>ROW($1:$100);BangGia!$H$2:$H$32;1)/..........
* đoạn MATCH(BangGia!$D$2:$D$32;BangGia!$D$2:$D$32;0)<>ROW($1:$100) : có phải là nó sẽ ra {0;0;0;0;0;0;0;0....1;1;1} để làm gì vậy anh?
Rất Mong anh giải thích thêm về công thức này
Cảm ơn anh
Yêu cầu của chủ thớt là "Truy tìm Giá bán của Mã hàng tùy thuộc theo: Mã Khách hàng, Mức số lượng bán và Ngày áp dụng". Do chủ thớt hỏi rãi rác như bạn đã góp ý bài trên, và tự mình áp dụng các công thức vào bài thực tế cuối cùng, cho nên khi tôi nhìn lại công thức mới thấy chưa chính xác, đúng ra nó phải như dưới đây:
Vậy công thức bạn hỏi phải là:
IF( MATCH( BangGia!$J$2:$J$40&BangGia!$D$2:$D$40, IF(($E3=BangGia!$D$2:$D$40)*($C3=BangGia!$B$2:$B$40), BangGia!$J$2:$J$40&BangGia!$D$2:$D$40) , ) <> ROW($1:$100),BangGia!$H$2:$H$40,1)
Công thức đó thực hiện biến đổi "Mức Số lượng bán - Cột H sheet 'Banggia'", dòng dữ liệu đầu tiên của từng mã hàng về số 1 dù nó đang có giá trị là bao nhiêu:
Tôi lấy ví dụ trong file đính kèm, công thức tại ô O40:
IF( MATCH( BangGia!$J$2:$J$40&BangGia!$D$2:$D$40, IF(($E40=BangGia!$D$2:$D$40)*($C40=BangGia!$B$2:$B$40), BangGia!$J$2:$J$40&BangGia!$D$2:$D$40) , ) <> ROW($1:$100),BangGia!$H$2:$H$40,1)
Lẽ ra công thức chỉ đơn giản là so khớp bằng công thức:
MATCH(BangGia!$J$2:$J$40&BangGia!$D$2:$D$40, BangGia!$J$2:$J$40&BangGia!$D$2:$D$40 ,0 ): trả về kết quả là số vị trí dòng của từng mã hàng mà nó tìm thấy đầu tiên. Phải ghép 2 cột "Ngày áp dụng" và "Mã SP" vì theo yêu cầu của chủ thớt Mã hàng sẽ áp dụng có nhiều Ngày tương thích.
Vd: (Xem công thức cột AA "TM1") mã SP 2 có tại 4 ô (S5, S6, S35, S36) tương ứng với số thứ tự của nó là: 2, 3, 32, 33. Số thứ tự 2 và 3 có chung ngày áp dụng 20/03/2021, nên khi so khớp nó lấy stt: 2 là dòng đầu tiên của SP2 với ngày áp dụng 20/03/2021; Số thứ tự 32 và 33 có chung ngày áp dụng là 01/08/2021, nên khi so khớp nó lấy stt: 32 là dòng đầu tiên của SP2 với ngày áp dụng 01/08/2021.
Tuy nhiên Giá bán còn phụ thuộc vào "Khách hàng" và "Mã hàng" dành cho khách đó nên phải đặt thêm điều kiện: ($E40=BangGia!$D$2:$D$40)*($C40=BangGia!$B$2:$B$40), nếu thỏa mới cho thể hiện "Ngày áp dụng" và "Mã SP", nên công thức thành:
Yêu cầu của chủ thớt là "Truy tìm Giá bán của Mã hàng tùy thuộc theo: Mã Khách hàng, Mức số lượng bán và Ngày áp dụng". Do chủ thớt hỏi rãi rác như bạn đã góp ý bài trên, và tự mình áp dụng các công thức vào bài thực tế cuối cùng, cho nên khi tôi nhìn lại công thức mới thấy chưa chính xác, đúng ra nó phải như dưới đây:
Vậy công thức bạn hỏi phải là:
IF( MATCH( BangGia!$J$2:$J$40&BangGia!$D$2:$D$40, IF(($E3=BangGia!$D$2:$D$40)*($C3=BangGia!$B$2:$B$40), BangGia!$J$2:$J$40&BangGia!$D$2:$D$40) , ) <> ROW($1:$100),BangGia!$H$2:$H$40,1)
Công thức đó thực hiện biến đổi "Mức Số lượng bán - Cột H sheet 'Banggia'", dòng dữ liệu đầu tiên của từng mã hàng về số 1 dù nó đang có giá trị là bao nhiêu:
Tôi lấy ví dụ trong file đính kèm, công thức tại ô O40:
IF( MATCH( BangGia!$J$2:$J$40&BangGia!$D$2:$D$40, IF(($E40=BangGia!$D$2:$D$40)*($C40=BangGia!$B$2:$B$40), BangGia!$J$2:$J$40&BangGia!$D$2:$D$40) , ) <> ROW($1:$100),BangGia!$H$2:$H$40,1)
Lẽ ra công thức chỉ đơn giản là so khớp bằng công thức:
MATCH(BangGia!$J$2:$J$40&BangGia!$D$2:$D$40, BangGia!$J$2:$J$40&BangGia!$D$2:$D$40 ,0 ): trả về kết quả là số vị trí dòng của từng mã hàng mà nó tìm thấy đầu tiên. Phải ghép 2 cột "Ngày áp dụng" và "Mã SP" vì theo yêu cầu của chủ thớt Mã hàng sẽ áp dụng có nhiều Ngày tương thích.
Vd: (Xem công thức cột AA "TM1") mã SP 2 có tại 4 ô (S5, S6, S35, S36) tương ứng với số thứ tự của nó là: 2, 3, 32, 33. Số thứ tự 2 và 3 có chung ngày áp dụng 20/03/2021, nên khi so khớp nó lấy stt: 2 là dòng đầu tiên của SP2 với ngày áp dụng 20/03/2021; Số thứ tự 32 và 33 có chung ngày áp dụng là 01/08/2021, nên khi so khớp nó lấy stt: 32 là dòng đầu tiên của SP2 với ngày áp dụng 01/08/2021.
Tuy nhiên Giá bán còn phụ thuộc vào "Khách hàng" và "Mã hàng" dành cho khách đó nên phải đặt thêm điều kiện: ($E40=BangGia!$D$2:$D$40)*($C40=BangGia!$B$2:$B$40), nếu thỏa mới cho thể hiện "Ngày áp dụng" và "Mã SP", nên công thức thành: