..
F4:Hxx
=IFERROR(INDEX(A:A,AGGREGATE(15,6,ROW($A$4:$A$99)/(MATCH($A$4:$A$99,$A$4:$A$99,0)=ROW($A$1:$A$99)),ROW(A1))),"")
a) MATCH($A$4:$A$99,$A$4:$A$99,0)
เพื่อหาตำแหน่ง ของ A4:A99 จะได้เลขลำดับเรียงตั้งแต่ เลข 1-2-3-4 ไปเรื่อยๆ
ถ้าค่าที่ซ้ำกันจะได้เลขเดียวกัน --ดังนั้นเลข ID เดียวกัน ซ้ำกัน ต้องบังคับให้เหลือค่าเดียว
โดยไปเทียบกับ ROW(A1:A99) ถ้าตรงกันเป็น TRUE ไม่ตรงเป็น FALSE
b) ROW(A4:A99)/ ผล TRUE ,FALSE ที่ได้จาก a) --ได้เลขแถว ของ A4:A99 ที่เป็นค่าแรกของแต่ละ ID
c) AGGREGATE ไปครอบเพื่อไล่ค่าลำดับ เลขแถวจากน้อยไปมาก
d) เมื่อได้ค่าแถว แล้ว INDEX ไปครอบ เพื่อดึงเอา ตำแหน่ง ตามค่าแถวนั้นมาแสดง
e) IFERROR ไปครอบ เพื่อบังคับค่า ERROR จากแถวที่เกิน ให้เป็นค่าว่าง
------------------
I4:Ixx
=IF(F4="","",LOOKUP(2,1/(F4=$A$4:$A$99),$C$4:$C$99))
a) F4=A4:A99 ได้ค่า TRUE FALSE ออกมา
b)1/ผลที่ได้จาก a) ได้เลข 1 อาจจะมี เลข 1 หลายตัว และค่า ERROR
c) LOOKUP เลข ที่มากกว่าเลข 1 เช่นในที่นี้ใช้เลข 2 จะไปมองตำแหน่งเลข 1 ตำแหน่งสุดท้าย
d) ให้แสดงผลของ C4:C99 ในตำแหน่งเดียวกับ เลข 1 ที่ LOOKUP เจอ
e) IF(F4="","" .....หมายถึง ถ้า F4 เป็นค่าว่าง ไม่ต้องเอาอะไรออกมาแสดง
รายละเอียดของแต่ละฟังก์ชั่น ศึกษาได้จาก www. ทั่วไป หรือ Youtube หรือ
www.snasui.com
Norkaz