อาทิตย์ก่อนหน้ามีแฟนเพจ inbox ถามมาว่า มีวิธีตรวจสอบอย่างไรว่าตัวเลข 5 หลักที่กรอกใน Cell นั้นเรียงจากน้อยไปมากแล้วหรือยัง? ผมคิดว่าเป็นเรื่องที่น่าสนใจ ดังนั้นมาดูวิธีทำกันครับ
สมมติตัวอย่างเป็นแบบนี้
วิธีทำมีได้หลายแบบ เช่น ถ้าใช้ Excel 365 ก็จะมีฟังก์ชันพิสดารให้ใช้เยอะแยะ แต่ถ้าใช้ Excel ที่เก่ากว่า 365 จะทำอะไรแปลกๆ ได้ยาก จึงเหมาะกับการเขียนเช็คทีละช่องให้ชัดเจนไปเลยเช่น
ถ้าใช้ Excel 365
ขั้นตอนแรกคือดึงข้อมูลแต่ละตัวมาพิจารณาด้วย MID เช่น
=MID(A2,SEQUENCE(LEN(A2)),1)
จากนั้นก็ลอง Sort ข้อมูลใหม่ ด้วย SORT
=SORT(MID(A2,SEQUENCE(LEN(A2)),1))
แล้วใช้ CONCAT หรือ TEXTJOIN รวมข้อความอีกที
=CONCAT(SORT(MID(A2,SEQUENCE(LEN(A2)),1)))
CONCAT แล้วจะเป็น Text ยังไงก็ไม่เท่าเลขเดิม ดังนั้นเราบังคับ Text ให้เป็น Number ด้วยการใส่ –นำหน้า แล้วค่อยเอามาเทียบกัน
=--CONCAT(SORT(MID(A2,SEQUENCE(LEN(A2)),1)))=A2
ตัวไหนที่เป็น TRUE คือตัวที่เรียงจากน้อยไปมากแล้วนั่นเอง
ถ้าใช้ Excel version เก่ากว่า Excel 365
ถ้าใช้ Excel version เก่า จะไม่มีฟังก์ชันเจ๋งๆ อย่าง SEQUENCE, SORT และ CONCAT ให้ใช้เลย ดังนั้นเราจะใช้แนวทาง คือ ดึงแต่ละคู่มาเทียบกันตรงๆ เลยน่าจะง่ายที่สุด เช่น
=MID($A5,B$2,1)<=MID($A5,B$3,1)
จากนั้น copy paste ทั้งตารางได้
จากนั้นก็เขียนสูตรเช็คว่าทุกคู่เป็นจริงหรือไม่ด้วย AND ก็จบเลย
ตัวที่เป็น TRUE ก็คือมีการเรียงแล้วนั่นเอง
ชอบวิธีแบบไหนกัน?
ทีนี้หลายคนอาจคิดว่าวิธีการของ Excel 365 ดูเหมือนจะยากกว่าซะงั้น จริงๆ เป็นเพราะว่ามันยืดหยุ่นมากกว่า เนื่องจากตัวเลขจะมีกี่หลักก็ได้ ในขณะที่วิธีแบบ Excel version เก่านี้ เหมาะกับจำนวนหลักที่แน่นอนมากกว่า
ที่จริงแล้ว Excel version เก่าก็เขียนสูตรแบบ Array Formula เพื่อให้จำนวนหลักมัน Dynamic ได้แบบเดียวกับ Excel 365 ก็ได้ แต่สูตรที่เขียนจะซับซ้อนขึ้นมากเลยครับ ใครอยากลองฝึกของโหดก็ลองดูได้นะ ^^
Leave a Reply