sakkatos wrote:จากไฟล์ Ans_ResortData.xls นะคับ ใน sheet2 ช่อง A2 ที่เรียงตามรหัส
=IF(ROWS($A$2:A2)>$E$1,"",SMALL(INDEX(Sheet1!$A$2:$A$15+0,0),ROWS($A$2:A2)))
ตรง INDEX(Sheet1!$A$2:$A$15+0,0) มันใช้ยังไงเหรอคับแล้วมันใช้เก็บค่าประเภทไหนเหรอคับเพราะผมลองเอาไปใช้กับเลขบัตรประชาชนแล้วมันใช้ไม่ได้
และเครื่องหมาย $ ในสูตรหมายถึงอะไรคับ

อธิบายเครื่องหมาย $ ก่อนแล้วกันครับ เพราะจะต้องเข้าใจตรงนี้เป็นหลักถึงจะสามารถสร้างหรือเข้าใจสูตรต่าง ๆ ได้
เครื่องหมาย $ หมายถึงการ Lock ค่าให้คงที่ครับ เนื่องจากในแต่ละเซลล์จะมีตำแหน่งคอลัมน์และบรรทัด เช่น
A1 คือ คอลัมน์ A บรรทัดที่ 1
B20 คือ คอลัมน์ B บรรทัดที่ 20
คอลัมน์และบรรทัดสามารถที่จะ Lock ให้คงที่ไม่เปลี่ยนแปลงได้ ยกตัวอย่างเช่นเซลล์
D1:D5 มีค่า 1, 2, 3, 4, 5 ตามลำดับ
E1:E5 มีค่า 6, 7, 8, 9, 10 ตามลำดับ
หากที่ A1 เราเขียนสูตร
=$D$1 จากนั้น Copy สูตรนี้ไปใช้ที่
A1:B5 ค่าที่ได้ใน A1:B5 คือค่าในเซลล์ D1 เท่านั้น เพราะเรา Lock ทั้่งคอลัมน์และทั้งบรรทัด
หากที่ A1 เราเขียนสูตร
=$D1 จากนั้น Copy สูตรนี้ไปใช้ที่
A1:B5 ค่าที่ได้ใน A1:A5, B1:B5 คือค่าในเซลล์ D1:D5 เท่านั้น เพราะเรา Lock คอลัมน์แต่ไม่ได้ Lock บรรทัด
ลองเปลี่ยนสูตรที่ A1 ใหม่เป็น =D$1 และ =D1 แล้วลอง Copy ไปใช้ที่
A1:B5 แล้วสังเกตดูผลแตกต่างครับ
ส่วนสูตร =IF(ROWS($A$2:A2)>$E$1,"",SMALL(INDEX(Sheet1!$A$2:$A$15+0,0),ROWS($A$2:A2)))
ความหมายคือ หากจำนวนแถวใน $A$2:A2 (ฟังก์ชั่น Rows($A$2:A2) จะเป็นการนับจำนวนแถวระหว่าง $A$2:A2สังเกตการ Lock และไล่ดูบรรทัดล่าง ๆ ของสูตรจะเห็นว่าช่วงข้อมูลมีการเปลี่ยนแปลงไปเรื่อย ๆ) มากกว่าค่าในเซลล์ E1 แล้ว ให้แสดงค่าว่าง ถ้าจำนวนแถวใน $A$2:A2 ไม่มากกว่าค่าในเซลล์ E1 แล้ว ให้แสดงผลจากสูตร
SMALL(INDEX(Sheet1!$A$2:$A$15+0,0),ROWS($A$2:A2))
ฟังก์ชั่น Small เป็นการหาค่าที่น้อยที่สุดโดยสามารถระบุลำดับได้ เช่นค่าทีน้อยที่สุดเป็นลำดับที่ 1, 2 เป็นต้น
ซึ่งจากสูตรด้านบนหมายความว่าให้ค่าที่น้อยที่สุดในช่วง INDEX(Sheet1!$A$2:$A$15+0,0) โดยดูำ
ลำดับได้จากสูตร ROWS($A$2:A2)
โดยปกติถ้าข้อมูลถูกคีย์มาในรูปแบบตัวเลขเราไม่ต้องมีฟังก์ชั่น Index สูตรจะเหลือแค่เพียง
=IF(ROWS($A$2:A2)>$E$1,"",SMALL(Sheet1!$A$2:$A$15,ROWS($A$2:A2)))
ที่เลือกใ้ช้ในที่นี้ก็เพราะว่าข้อมูล Sheet1$A$2:$A$15 เป็น Text จึงต้องใ้ช้ฟังก์ชั่น Index เข้ามาช่วยให้แสดงค่า Array แบบไม่ต้องกดแป้น Ctrl+Shift+Enter
กรณีการคีย์ตัวเลขให้เป็น Text เราต้องแปลงจาก Text ให้เป็นตัวเลขเพื่อให้สามารถหา ค่าน้อย ค่ามาก ได้โดยง่าย ซึ่งจะเห็นว่ามีการบวกด้วย 0 เข้าไปด้วย
ต้องค่อย ๆ ทำความเข้าใจครับ
