Tết nhất đến rồi gặp phải bảng tính này mà phải làm thủ công choáng hết cả đầu anh em ạh.
Xin nhờ các anh em cao thủ giúp sức 1 tay. Yêu cầu là Nối các ký tự theo điều kiện. Chi tiết anh em xem giúp trong file exel
Anh begaint ơi, mấy hôm trước em cũng có thắc mắc tương tự và đã được giải đáp ở đây. Hôm nay em thấy anh làm gọn hơn nhiều, nhưng em không hiểu tại sao lại có hàm noiN, anh có thể giải thích để em học hỏi được không ạ? Em cảm ơn anh nhiều.
Vâng em xin cảm ơn anh đã hướng dẫn ạCái đó là hàm tự tạo. Bạn mở file rồi nhấn Alt+F11 để xem code.
Cảm ơn anh befaint xin nhờ anh giúp xử lý bảng tính trong sheet "SP X" như yêu cầu file đính kèm. View attachment 170551
=JoinIf(";",IF(( 'Du lieu nguon'!$A$6:$A$12=$C$2)*('Du lieu nguon'!$B$5:$D$5=$B5),'Du lieu nguon'!$B$6:$D$12,NA()),"*")
=JoinText(";",UniqueList(IF(( 'Du lieu nguon'!$A$6:$A$12=$C$2)*('Du lieu nguon'!$B$5:$D$5=$B5),'Du lieu nguon'!$B$6:$D$12,NA())))
bộ hàm rất hay, có tính ứng dụng cao, bổ xung cho các hàm Excel còn thiếu, rất bổ ích cho người dùngTặng bạn bộ hàm nối chuỗi theo điều kiện gồm JoinText và JoinIf (cộng 2 hàm hỗ trợ ConvertTo1DArray và UniqueList).
Với yêu cầu trong file thì tôi thấy dùng JoinIf rất thích hợp:
Công thức tại C5 sheet SP X là:
Bấm Ctrl + Shift + Enter để kết thúcMã:=JoinIf(";",IF(( 'Du lieu nguon'!$A$6:$A$12=$C$2)*('Du lieu nguon'!$B$5:$D$5=$B5),'Du lieu nguon'!$B$6:$D$12,NA()),"*")
Đó là tôi nói dùng JoinIf thích hợp, tuy nhiên nếu dùng hàm JoinText cũng giải quyết được luôn, dù công thúc dài hơn một chút:
Cũng Ctrl + Shift + Enter để kết thúcMã:=JoinText(";",UniqueList(IF(( 'Du lieu nguon'!$A$6:$A$12=$C$2)*('Du lieu nguon'!$B$5:$D$5=$B5),'Du lieu nguon'!$B$6:$D$12,NA())))
---------------------------------
Đây là bộ hàm mà tôi tâm đắc nhất trong quá trình nghiên cứu viết code VBA, bởi nó đáp ứng hầu như mọi nhu cầu liên quan đến nối chuỗi có điều kiện
(bạn có thể mường tượng JoinIf giống với SUMIFS và JoinText giống với SUMPRODUCT về cách dùng)
bộ hàm rất hay, có tính ứng dụng cao, bổ xung cho các hàm Excel còn thiếu, rất bổ ích cho người dùng
mình nghĩ JoinIf tương tự với SumIf, còn phải Ctrl+Shift+Enter, nếu bạn thiết kế lại, chừa sẵn chừng 3 đến 5 vùng điều kiện giống như SumIfS, kết thúc công thức chỉ Enter bình thường thì càng tuyệt vời hơn nữa, người bình thường cũng sử dụng dể dàng, cộng đồng GPE nối chuổi sẽ hưởng lợi lớn nhờ công của bạn. Cám ơn bạn
mình đọc code cũng không hiểu hết các lệnh, nên cũng không hiểu được tác dụng đầy đủ của hàm, mình chỉ suy nghĩ đơn giản, làm sao một người không rành lắm về các kỷ thuật lồng ghép các hàm vẫn có thể sử dụng được hàm JoinIfS theo nhiều điều kiện một cách dể dàng, dĩ nhiên là phải nhập đúng cấu trúc qui định của hàm, bản thân hàm SumIfS nếu nhập sai nó hiện kết quả lổi ngayCảm ơn bạn quan tâm!
Khi viết bộ hàm này mình có chủ ý dùng đối số là mảng, mục đích tạo thêm nhiều lựa chọn: Có thể nhận đối số là range hoặc thậm chí là 1 mảng khác do công thức trả về. Vì thế mà buộc phải Ctrl + Shift + Enter
Các điều kiện thì do mình tùy ý khai triển, nghĩ được tới đâu hàm sẽ làm tới đó. Còn nếu phát triển theo kiểu 5 hay 6 đối số như SUMIFS thì mình không lường nỗi những tình huống nào có thể xảy ra để bẫy lỗi
---------------------
Nói thêm về bộ hàm nối chuỗi này: Mình dùng ParamArray nên có thể nối chuỗi từ rất nhiều mảng khác nhau chứ không phải chỉ một mảng như đang "biểu diễn" ở trên... Nói chung là còn khá nhiều tình huống chưa dùng tới
Cảm ơn chị NguyenNgocThuHien xin nhờ anh giúp xử lý bảng tính trong sheet "SP X" như yêu cầu file đính kèm.View attachment 170552
bộ hàm rất hay, có tính ứng dụng cao, bổ xung cho các hàm Excel còn thiếu, rất bổ ích cho người dùng
mình nghĩ JoinIf tương tự với SumIf, còn phải Ctrl+Shift+Enter, nếu bạn thiết kế lại, chừa sẵn chừng 3 đến 5 vùng điều kiện giống như SumIfS, kết thúc công thức chỉ Enter bình thường thì càng tuyệt vời hơn nữa, người bình thường cũng sử dụng dể dàng, cộng đồng GPE nối chuổi sẽ hưởng lợi lớn nhờ công của bạn. Cám ơn bạn