EXCEL TOOLS
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
[code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)ปัญหากรณี ก2
1. ช่อง R15 ต้องได้ 12 วัน ได้จาก ช่อง O17 - P12 เกิดจาก S17 ไม่มี "รหัสไม่มีใน inm1" จึงต้องหาไปอีกบรรทัดเมือพบ S17 มี "รหัสมีใน inm1"
จึงได้นำวันทีช่อง O17 มาใช้
snasui wrote:ปัญหากรณี ก2
1. ช่อง R15 ต้องได้ 12 วัน ได้จาก ช่อง O17 - P12 เกิดจาก S17 ไม่มี "รหัสไม่มีใน inm1" จึงต้องหาไปอีกบรรทัดเมือพบ S17 มี "รหัสมีใน inm1"
จึงได้นำวันทีช่อง O17 มาใช้
ที่อธิบายมานั้นไม่สอดคล้องกับเงื่อนไขเดิม ช่วยทบทวนใหม่ครับ
P12 เกี่ยวข้องกับ ก2 อย่างไรครับ
snasui wrote:เซลล์ R2 คีย์สูตร
=IF(OR(S2="รหัสไม่มีใน inm1",COUNTIF($N$2:N2,N2)=1,MAX(IF(N$2:N2=N2,IF(S$2:S2<>"รหัสไม่มีใน inm1",O$2:O2)))=0,MAX(IF(N$1:N1=N2,IF(S$1:S1<>"รหัสไม่มีใน inm1",P$1:P1)))=0),0,MAX(IF(N$2:N2=N2,IF(S$2:S2<>"รหัสไม่มีใน inm1",O$2:O2)))-MAX(IF(N$1:N1=N2,IF(S$1:S1<>"รหัสไม่มีใน inm1",P$1:P1))))
Ctrl+Shift+Enter > Copy ลงด้านล่าง
snasui wrote:เซลล์ R2 ปรับสูตรเป็นด้านล่างครับ
=IF(OR(S2="รหัสไม่มีใน inm1",COUNTIF($N$2:N2,N2)=1,MAX(IF(N$2:N2=N2,IF(S$2:S2<>"รหัสไม่มีใน inm1",O$2:O2)))=0,MAX(IF(N$1:N1=N2,IF(S$1:S1<>"รหัสไม่มีใน inm1",P$1:P1)))=0),0,MAX(IF(N$2:N2=N2,IF(S$2:S2<>"รหัสไม่มีใน inm1",O$2:O2)))-MAX(IF(N$1:N1=N2,IF(S$1:S1<>"รหัสไม่มีใน inm1",P$1:P1))))
Ctrl+Shift+Enter > Copy ลงด้านล่าง
คำตอบ 12 จะอยู่ที่เซลล์ R17
เนื่องจากค่าในคอลัมน์ S มีการวรรค 2 วรรค แต่สูตรในคอลัมน์ R นั้นได้เว้นวรรคเพียงวรรคเดียวเท่านั้น
ส่วนสูตรที่เขียนมาเองมีข้อจำกัดในการขยับไปหาค่าที่ต้องการเนื่องจากเงื่อนไขที่ใช้มีความซับซ้อนกว่าที่จะใช้สูตรเช่นนั้นครับ
หาก Copy สูตรจากความเห็นผมไปแล้วได้ค่าเท่าเดิม ควรจะตรวจสอบค่าวรรคในสูตร คำว่า "รหัสไม่มีใน inm1" ในสูตรจะเคาะวรรค 2 วรรคเพื่อให้เท่ากับค่าในคอลัมน S เพราะในคอลัมน์ S มีการวรรคไปสองวรรคsnasui wrote:เนื่องจากค่าในคอลัมน์ S มีการวรรค 2 วรรค แต่สูตรในคอลัมน์ R นั้นได้เว้นวรรคเพียงวรรคเดียวเท่านั้น
snasui wrote:สาระสำคัญอยู่ที่บรรทัดนี้ครับ
หาก Copy สูตรจากความเห็นผมไปแล้วได้ค่าเท่าเดิม ควรจะตรวจสอบค่าวรรคในสูตร คำว่า "รหัสไม่มีใน inm1" ในสูตรจะเคาะวรรค 2 วรรคเพื่อให้เท่ากับค่าในคอลัมน S เพราะในคอลัมน์ S มีการวรรคไปสองวรรคsnasui wrote:เนื่องจากค่าในคอลัมน์ S มีการวรรค 2 วรรค แต่สูตรในคอลัมน์ R นั้นได้เว้นวรรคเพียงวรรคเดียวเท่านั้น
ภาพด้านล่างนี้คือสูตรและคำตอบที่ถูกต้องครับ
snasui wrote:ช่วยให้นิยามคำว่า "ย้อนหลัง" ว่าพิจารณาอย่างไรจึงจะถือว่าย้อนหลังหรือไม่ย้อนหลังครับ
snasui wrote:ตัวอย่างสูตร J2 คีย์
=IFERROR(AND(I2="รหัสมีใน inm1",I3="รหัสมีใน inm1",MONTH(E2)=MONTH(F1),MONTH(F1)=10)+0,0)
Enter > Copy ลงด้านล่าง
กรณีเดือนย้อนหลังไม่ใช่ 10 ให้เปลียนเลข 10 เป็นเลขใด ๆ ตามต้องการครับ