สำหรับคำอธิบายสูตรดูตามด้านล่างครับ
ขออธิบายสูตรในเซลล์ C4 แล้วกันครับ
=IF(OR(D4="",D4="n/a"),"",A4&"."&LOOKUP(2,1/(B$2:B4),B$2:B4)&"."&ROWS(OFFSET($B$2,MATCH(2,1/(B$1:B4))-2,0):OFFSET($B$2,MATCH(9.99999999999999E+307,$B$2:B4)-1,0)))
หลักการคือการเชื่อมข้อมูลเข้าด้วยกัน โดยนำ 3 ค่าตามด้านล่างมาเชื่อมเข้าด้วยกัน
- IF(OR(D4="",D4="n/a"),"",A4&"."&LOOKUP(2,1/(B$2:B4),B$2:B4)
- "." และ
- ROWS(OFFSET($B$2,MATCH(2,1/(B$1:B4))-2,0):OFFSET($B$2,MATCH(9.99999999999999E+307,$B$2:B4)-1,0))
คำอธิบายสูตร
ข้อ 1 หมายความว่า หาก D4 เป็นค่าว่าง หรือมีค่าเป็น n/a ก็ให้แสดงค่าว่าง หากไม่เข้าเงื่อนไขข้างต้นก็ให้แสดงผลลัพธ์จากสูตร A4&"."&LOOKUP(2,1/(B$2:B4),B$2:B4) ซึ่ง LOOKUP(2,1/(B$2:B4),B$2:B4) เป็นการหาค่าตัวเลขสุดท้ายที่ไม่ใช่ 0 ที่พบในช่วง B$2:B4
ข้อ 2 เครื่องหมายจุด
ข้อ 3 เป็นการหาระยะห่างระหว่าง OFFSET($B$2,MATCH(2,1/(B$1:B4))-2,0) กับ OFFSET($B$2,MATCH(9.99999999999999E+307,$B$2:B4)-1,0)
- OFFSET($B$2,MATCH(2,1/(B$1:B4))-2,0) หมายถึง ตำแหน่งเซลล์สุดท้ายที่ไม่ใช่ 0 ในช่วง B1:B4
- OFFSET($B$2,MATCH(9.99999999999999E+307,$B$2:B4)-1,0) หมายถึงตำแหน่งเซลล์สุดท้ายในช่วง B2:B4 ที่เป็นตัวเลขรวมทั้ง 0
- ROWS(OFFSET($B$2,MATCH(2,1/(B$1:B4))-2,0):OFFSET($B$2,MATCH(9.99999999999999E+307,$B$2:B4)-1,0)) คือระยะห่างระหว่างเซลล์สุดท้ายที่เป็นตัวเลขที่ไม่ใช่ 0 กับเซลล์สุดท้ายที่เป็นตัวเลข