คงต้องเพิ่มคอลัมน์ช่วยใน Sheet1 อีก และปรับสูตรในคอลัมน์ E, G, L ใน Sheet2 ครับ ดังนี้

Sheet1
Y4 คีย์
=--(COUNTIFS($X$4:$X$26,X4,$W$4:$W$26,W4,$I$4:$I$26,">0")<>COUNTIFS($X$4:$X$26,X4,$W$4:$W$26,W4,$K$4:$K$26,">0"))
Enter -> คัดลอกลงล่าง

Sheet2
L3
Code: Select all
=IF(K3="",0,SUM(--(FREQUENCY(IF(Sheet1!$X$4:$X$26=K3,IF(NOW()-Sheet1!$W$4:$W$26>335,IF(Sheet1!$B$4:$B$26+Sheet1!$K$4:$K$26>0,IF(Sheet1!$Y$4:$Y$26,MATCH(Sheet1!$W$4:$W$26&Sheet1!$X$4:$X$26&Sheet1!$K$4:$K$26,Sheet1!$W$4:$W$26&Sheet1!$X$4:$X$26&Sheet1!$K$4:$K$26,0))))),ROW(Sheet1!$X$4:$X$26)-ROW(Sheet1!$X$4)+1)>0)))
E3
Code: Select all
=IF(C3="","",INDEX(Sheet1!$W$4:$W$26,SMALL(IF(FREQUENCY(IF(Sheet1!$X$4:$X$26=C3,IF(Sheet1!$B$4:$B$26+Sheet1!$K$4:$K$26>0,IF(Sheet1!$Y$4:$Y$26,MATCH(Sheet1!$W$4:$W$26&Sheet1!$X$4:$X$26&Sheet1!$K$4:$K$26,Sheet1!$W$4:$W$26&Sheet1!$X$4:$X$26&Sheet1!$K$4:$K$26,0)))),ROW(Sheet1!$X$4:$X$26)-ROW(Sheet1!$X$4)+1),ROW(Sheet1!$X$4:$X$26)-ROW(Sheet1!$X$4)+1),COUNTIF(C$3:C3,C3))))
G3
Code: Select all
=IF(C3="","",INDEX(Sheet1!$K$4:$K$26,SMALL(IF(FREQUENCY(IF(Sheet1!$X$4:$X$26=C3,IF(Sheet1!$B$4:$B$26+Sheet1!$K$4:$K$26>0,IF(Sheet1!$Y$4:$Y$26,MATCH(Sheet1!$W$4:$W$26&Sheet1!$X$4:$X$26&Sheet1!$K$4:$K$26,Sheet1!$W$4:$W$26&Sheet1!$X$4:$X$26&Sheet1!$K$4:$K$26,0)))),ROW(Sheet1!$X$4:$X$26)-ROW(Sheet1!$X$4)+1),ROW(Sheet1!$X$4:$X$26)-ROW(Sheet1!$X$4)+1),COUNTIF(C$3:C3,C3))))
ทั้ง 3 สูตรต้องกด Ctrl+Shift+Enter เพื่อรับสูตร -> คัดลอกลงล่างครับ
จริงๆ แล้วผมไม่อยากเพิ่มคอลัมน์ช่วยมากเกินไปและไม่อยากให้สูตรอาร์เรย์มันยาวมาก เพราะหากข้อมูลเริ่มเยอะ จะทำให้คำนวณช้ามากๆ แต่นึกวิธีอื่นไม่ออกจริงๆ ครับ ถ้าหากออกแบบตารางฐานข้อมูลใน Sheet1 ให้มีลักษณะเป็น database มากขึ้นได้ ผมว่าน่าจะใช้สูตรง่ายขึ้นนะครับ ผมบอกแนวคิดและเงื่อนไขเอาไว้ดีกว่า เผื่ออาจารย์และเพื่อนๆ ท่านอื่นจะเข้ามาช่วยแนะนำให้รวบรัดขึ้นครับ เพราะหากจะทำตามนี้ คุณ Nutta ก็ต้องมานั่งแก้สูตรหากข้อมูลใน Sheet1 มีแถวมากขึ้นเรื่อยๆ (ต้องแก้ในสูตรทุกสูตรที่มีช่วงอ้างอิงแถว 4:26 และต้องเพิ่มคอลัมน์ช่วยใน Sheet1 ตามข้อมูลที่มากขึ้น) แต่หากจะใส่สูตรเผื่อเอาไว้ก่อนมากๆ ก็ไม่ดีแน่ เพราะสูตรอาร์เรย์ยิ่งเยอะก็จะยิ่งช้าครับ
Sheet1.png
Sheet2.png
////เงื่อนไขรายการใน Sheet1 ที่จะเอามาแสดง////
1. Fz.date (column B) ห่างจากวันที่ปัจจุบันเกิน 335 วัน ก็ให้เอา OPU (column D) นั้นมาแสดง: ผมเลยทำคอลัมน์ W ใน Sheet1 เพื่อให้คำนวณระยะห่างง่ายๆ (คอลัมน์ X ก็ด้วย เพื่ออ้างอิง OPU ง่ายๆ)
2. หาก OPU มี Fz.date หลายวัน ที่ห่างเกิน 335 วันก็ให้แสดงทุกวันเลย
3. และแต่ละ OPU แต่ละ Fz.date หากมี Tw.date (column K) ก็ให้แสดงวันที่ Tw.date ด้วยโดยแสดงทุกวันและไม่เอาซ้ำ
4. แต่ละ OPU ในแต่ละ Fz.date หากถูกเบิกสินค้าออกไปหมดแล้ว คือมี Tw.date กำกับทุกบรรทัด ก็ไม่ต้องเอามาแสดง: ผมเลยทำคอลัมน์ Y ใน Sheet1 เพื่อนับว่า OPU วันไหนถูกเบิกเอาไปใช้หมดแล้ว 0 คือไม่ต้องเอามาแสดง
เงื่อนไขทั้งหมดจับยัดเข้าไปในสูตร Sheet2 ทั้ง 3 สูตรดังข้างต้น ตรงที่ IF เยอะๆ ที่อยู่ในสูตร Frequency ครับ
You do not have the required permissions to view the files attached to this post.