
ค่อย ๆ ถามตอบกันไปครับ
จากการอ่านคำอธิบายผมยังไม่กระจ่าง แต่จะช่วยตอบและช่วยแนะแนวทางการแกะสูตรที่คุณ tubthai เขียนมา จะได้เห็นว่านำบรรทัดใดมาแสดง และจะได้ตรวจสอบว่าตรงกับที่ต้องการหรือไม่ ถ้าไม่ตรง ก็จะได้เห็นว่าไม่ตรงอย่างไรและต้องการให้นำบรรทัดใดมาแสดง ด้วยเหตุผลใด
ผมได้แทรกลำดับของข้อมูลใน Sheet1 และ Sheet2 อยู่ที่ คอลัมน์ V และ W ตามลำดับ
สูตรที่คุณ tubthai เขียนมาผมได้เปลี่ยนให้เป็น Sum แทน Smproduct และเพิ่ม Iserror เพื่อเปลี่ยนค่า Error ให้เป็นค่าว่างเท่านั้น ส่วนอื่น ๆ เหมือนเดิมทั้งหมดและให้ผลลัพธ์เช่นเดิมยกเว้นเปลี่ยนค่าผิดพลาดให้เป็นค่าว่าง ที่ต้องเปลี่ยนเพื่อลดการเกิด Error หากเจอ Text ซึ่งจะได้สูตรเป็น
Code: Select all
=IFERROR(IF(SUM(IF(P2=ABS(sheet1!$P$2:$P$23),IF(T2=sheet1!$T$2:$T$23,ROW(sheet1!$T$2:$T$23)))),INDEX(sheet1!$U$1:$U$23,SMALL(IF(SMALL(ABS(U2-IF(P2=ABS(sheet1!$P$2:$P$23),IF(T2=sheet1!$T$2:$T$23,sheet1!$U$2:$U$23))),1)=ABS(U2-IF(P2=ABS(sheet1!$P$2:$P$23),IF(T2=sheet1!$T$2:$T$23,sheet1!$U$2:$U$23))),ROW(sheet1!$U$2:$U$23)),1)),""),"")
หมายถึง หาก
Code: Select all
SUM(IF(P2=ABS(sheet1!$P$2:$P$23),IF(T2=sheet1!$T$2:$T$23,ROW(sheet1!$T$2:$T$23))))
เป็นจริงแล้ว ให้นำผลลัพธ์ของ
Code: Select all
INDEX(sheet1!$U$1:$U$23,SMALL(IF(SMALL(ABS(U2-IF(P2=ABS(sheet1!$P$2:$P$23),IF(T2=sheet1!$T$2:$T$23,sheet1!$U$2:$U$23))),1)=ABS(U2-IF(P2=ABS(sheet1!$P$2:$P$23),IF(T2=sheet1!$T$2:$T$23,sheet1!$U$2:$U$23))),ROW(sheet1!$U$2:$U$23)),1))
มาแสดง หากไม่เป็นจริงให้แสดงค่าว่าง
จากสูตร
Code: Select all
INDEX(sheet1!$U$1:$U$23,SMALL(IF(SMALL(ABS(U2-IF(P2=ABS(sheet1!$P$2:$P$23),IF(T2=sheet1!$T$2:$T$23,sheet1!$U$2:$U$23))),1)=ABS(U2-IF(P2=ABS(sheet1!$P$2:$P$23),IF(T2=sheet1!$T$2:$T$23,sheet1!$U$2:$U$23))),ROW(sheet1!$U$2:$U$23)),1))
หมายถึง จากช่วงเซลล์ sheet1!$U$1:$U$23 ให้นำลำดับที่เป็นผลลัพธ์ของ
Code: Select all
SMALL(IF(SMALL(ABS(U2-IF(P2=ABS(sheet1!$P$2:$P$23),IF(T2=sheet1!$T$2:$T$23,sheet1!$U$2:$U$23))),1)=ABS(U2-IF(P2=ABS(sheet1!$P$2:$P$23),IF(T2=sheet1!$T$2:$T$23,sheet1!$U$2:$U$23))),ROW(sheet1!$U$2:$U$23)),1)
มาแสดง
จากสูตร
Code: Select all
SMALL(IF(SMALL(ABS(U2-IF(P2=ABS(sheet1!$P$2:$P$23),IF(T2=sheet1!$T$2:$T$23,sheet1!$U$2:$U$23))),1)=ABS(U2-IF(P2=ABS(sheet1!$P$2:$P$23),IF(T2=sheet1!$T$2:$T$23,sheet1!$U$2:$U$23))),ROW(sheet1!$U$2:$U$23)),1)
หมายถึง ให้นำค่าที่น้อยที่สุดเป็นลำดับที่ 1 ของ
Code: Select all
IF(SMALL(ABS(U2-IF(P2=ABS(sheet1!$P$2:$P$23),IF(T2=sheet1!$T$2:$T$23,sheet1!$U$2:$U$23))),1)=ABS(U2-IF(P2=ABS(sheet1!$P$2:$P$23),IF(T2=sheet1!$T$2:$T$23,sheet1!$U$2:$U$23))),ROW(sheet1!$U$2:$U$23))
มาแสดง
จากสูตร
Code: Select all
IF(SMALL(ABS(U2-IF(P2=ABS(sheet1!$P$2:$P$23),IF(T2=sheet1!$T$2:$T$23,sheet1!$U$2:$U$23))),1)=ABS(U2-IF(P2=ABS(sheet1!$P$2:$P$23),IF(T2=sheet1!$T$2:$T$23,sheet1!$U$2:$U$23))),ROW(sheet1!$U$2:$U$23))
หมายถึง ถ้า
Code: Select all
SMALL(ABS(U2-IF(P2=ABS(sheet1!$P$2:$P$23),IF(T2=sheet1!$T$2:$T$23,sheet1!$U$2:$U$23))),1)=ABS(U2-IF(P2=ABS(sheet1!$P$2:$P$23),IF(T2=sheet1!$T$2:$T$23,sheet1!$U$2:$U$23)))
เป็นจริง ให้แสดงผลลัพธ์ของ
ซึ่งก็คือให้แสดงลำดับบรรทัด
จากสูตร
Code: Select all
ABS(U2-IF(P2=ABS(sheet1!$P$2:$P$23),IF(T2=sheet1!$T$2:$T$23,sheet1!$U$2:$U$23)))
หมายถึงค่าสัมบูรณ์ของ
Code: Select all
U2-IF(P2=ABS(sheet1!$P$2:$P$23),IF(T2=sheet1!$T$2:$T$23,sheet1!$U$2:$U$23))
จากสูตร
Code: Select all
IF(P2=ABS(sheet1!$P$2:$P$23),IF(T2=sheet1!$T$2:$T$23,sheet1!$U$2:$U$23))
หมายถึง หาก
เป็นจริง ให้แสดงผลลัพธ์ของ
Code: Select all
IF(T2=sheet1!$T$2:$T$23,sheet1!$U$2:$U$23)
จากสูตร
Code: Select all
IF(T2=sheet1!$T$2:$T$23,sheet1!$U$2:$U$23)
หมายถึง หาก
เป็นจริง ให้แสดงผลลัพธ์ของ
จากตัวอย่างการแกะสูตรด้านบน การแทนค่าควรจะแทนค่าจากด้านล่างขึ้นด้านบน จะทำให้เข้าใจได้สะดวก
ลองดูตัวอย่างสูตรตามไฟล์แนบจะได้เห็นว่าแต่ละคำตอบนั้นมาจากบรรทัดใดของข้อมูล และหากไม่ใช่ ควรจะเป็นบรรทัดใด และอธิบายมาด้วยว่า เหตุใดจึงเป็นบรรทัดนั้น
You do not have the required permissions to view the files attached to this post.