parakorn wrote:INDEX(ช่วงข้อมูลที่ต้องการค้นหา,บรรทัดที่ต้องการ,[คอลัมน์ที่ต้องการ]) จากสูตรที่สร้างใช้แค่บรรทัดครับ
[ยอดชำระแล้ว1.xlsx]Sheet1!$G$2:$G$65
บรรทัดนี้คือ "ช่วงข้อมูลที่ต้องการค้นหา"
MATCH(1,--([ยอดชำระแล้ว1.xlsx]Sheet1!$E$2:$E$65=$F2)*--(ROUNDDOWN([ยอดชำระแล้ว1.xlsx]Sheet1!$H$2:$H$65,0)=$D2)*--([ยอดชำระแล้ว1.xlsx]Sheet1!$I$2:$I$65=$U2),0))
บรรทัดนี้คือการ ค้นหาเลข 1 จากช่วงข้อมูลที่กำหนด โดยเปลี่ยนช่วงข้อมูลที่ต้องการ หากบรรทัดไหนเข้าเงื่อนไข ให้เป็นจริง(TRUE) แล้วใช้เครื่องหมายตรรกกะคณิตศาสตร์ (เครื่องหมาย --) เปลี่ยน TRUE ให้เป็น 1 (หากเป็นเท็จ หรือ FALSE จะได้ 0)
ซึ่ง ช่วงข้อมูลที่นำมาเปลี่ยน จะมี 3 ช่วงข้อมูลตามที่คุณ prasert ต้องการ แล้วนำช่วงข้อมูลทั้ง 3 มาคูณกัน
ซึ่งหาก บรรทัดไหน คืนค่า ได้เลข 1 ทั้งบรรทัด (ข้อมูลตรงกัน 3อย่าง) 1คูณ1คูณ1 เท่ากับ 1 สูตร(ถ้าเจอ 0 จะเท่ากับ 0 เพราะค่าใดๆคูณ0 เท่ากับ 0 เสมอ)
Match ก็จะหาลำดับ ของบรรทัดนั้น ไปใช้กับช่วงข้อมูลที่ต้องการค้นหาด้านบน ซึ่งผลลัพท์ก็คือ เลขที่บิลที่ต้องการนั่นเองครับ
หากมีไฟล์จำนวนมากอาจต้องใช้วิธีอื่น ลองแนบตัวอย่างมาใหม่ โดยแนบมาหลายๆไฟล์ จะได้ช่วยๆกันดูให้ครับ
ขอขอบคุณครับ สำหรับคำแนะนำดี ๆ ครับ
ผมจะแนบตัวอย่างให้ใหม่ครับ
ไฟล์ยอดทั้งหมด ให้ใช้ตัวเดิมครับ เพราะไฟล์นี้ มีไฟล์เดียว
ส่วนไฟล์ยอดชำระ ผมแนบใหม่ STM1 และ STM2 โดยทำการ แยกกันออกไป ZIP เพราะรวมกันแล้วแนบไฟล์ไม่ได้ ปกติจะอยู่โฟลเดอร์เดียวกันครับ ซึ่งมีทั้ง 51 ไฟล์ ครับ รบกวนดูให้ด้วยครับ ขอบคุณครับ
รบกวนดูว่าน่าจะมีวิธีอื่นไหมครับ เพราะ STM ในแต่ละไฟล์ มี 4-5000 เรคคอร์ด