หาตัวเลขที่หายไป ด้วย Excel ได้หรือเปล่า? ที่มาของเรื่องนี้มาจากผู้ร่วมงานท่านหนึ่ง สอบถามว่า ได้ใช้ Sequence Numbers หรือ Auto Numbers เป็น id ของข้อมูล แล้วพบว่า จำนวนตัวเลขตัวสุดท้ายของ Sequence Numbers ไม่ตรงกับจำนวนข้อมูล อย่างเช่น Sequence Numbers ตัวสุดท้ายคือ 68971 แต่จำนวนข้อมูลมีเพียงแค่ 68964 แสดงว่ามีบางตัวหายไป แล้วเราจะหามันได้อย่างไร? ถ้ามีไม่กี่ตัวก็คงไล่ดูทีละตัวได้ แต่ข้อมูลหลักหมื่นแบบนี้คงทำแบบนั้นไม่ไหว
ที่นึกออกตอกนนี้ก็มี 2 – 3 วิธี เช่น
เพื่อให้เห็นภาพชัดเจน เรามีตัวเลขที่เรียงลำดับ 1 – 500 อยู่ในคอลัมน์ A โดยเริ่มที่ A2 ไล่ไปจนครบ 500 แล้วแกล้งทำเลข 99 กับ 198 – 201 หาย อันนี้คือโจทย์ว่า เราจะใช้วิธีไหนบ้างที่จะได้คำตอบเป็น 99 198 199 200 201
เนื้อหาโดยรวม :)
หาตัวเลขที่หายไป ด้วย Xlookup (หรือ Vlookup)
วิธีแรก จะเป็นวิธีการใช้ VLookup หรือ XLookup โดยทำรายการตัวเลขเต็ม ๆ 1 – 500 เอาไว้ก่อน แล้วค่อยหาว่ามีตัวไหนหายไป (แนวคิดแบบเดียวกับการเปรียบเทียบ 2 ลิสต์ กรุณาย้อนกลับไปอ่าน)
ในตัวอย่าง จะใส่ตัวเลข 1 – 500 ไว้ที่คอลัมน์ A แล้วเอา ลิสต์ที่ต้องการตรวจสอบ ไว้ที่คอลัมน์ B และในคอลัมน์ C2 ใส่สูตรดังนี้
=XLOOKUP(A2,$B$2:$B$501,$B$2:$B$501,"Error",0)
จะเป็นการหา A2 (ตัวเลขจากรายการเต็ม) ว่ามีในช่วง $B$2:$B$501 หรือไม่ ถ้ามีให้แสดงผล แต่ถ้าไม่มี ให้แสดงคำว่า Error
แล้วเราก็คัดกรอง Error ขึ้นมาดูว่าตัวไหนบ้าง โดยดูจาก รายการที่อยู่ในคอลัมน์ A ก็จะได้คำตอบที่ต้องการว่าเลขไหนหายไปบ้าง
วิธีนี้เป็นตัวเลือกที่ดีอยู่เหมือนกัน โดยเฉพาะถ้าไม่ใช่ Sequence Number หรือตัวเลขเรียงลำดับแต่มีรายการเต็มของทั้งหมด
ใช้วิธี ลบตัวเลข
ถ้าเป็นตัวเลขเรียงลำดับกัน เราก็เอามาบวกลบกันได้ เอา งั้นเล่นง่าย ๆ เลย ถ้า ตัวเลข 1 2 3 4…แบบนี้ เอา 2-1 ต้องได้ 1 เอา 3 – 2 ต้องได้ 1 เอา 4-3 ต้องได้ 1 นั่นคือ ตัวเลขเรียงลำดับ จะต้องได้ผลลบจากตัวหน้าเป็น 1 เสมอ (ในกรณีที่ห่างกันทีละ 1)
ถ้างั้นก็ไม่ยากแล้วล่ะจ้ะ เอา Cell ตัวล่าง ลบ Cell ตัวบน (หรือจะเอาบนลบล่างก็ไม่ต่างกัน) เช่นใน cell B2 ใส่สูตร A3 – A2 ผลลัพธ์ก็ต้องได้ 1
ถ้างั้นก็ไม่ยากแล้วล่ะจ้ะ เอา Cell ตัวล่าง ลบ Cell ตัวบน (หรือจะเอาบนลบล่างก็ไม่ต่างกัน) เช่นใน cell B2 ใส่สูตร A3 – A2 ผลลัพธ์ก็ต้องได้ 1 ถ้าตรงไหนผลลัพธ์ไม่เท่ากับ 1 ก็แปลว่าไม่ได้เรียงลำดับต่อกัน ใช้ Filter กรองเพื่อเลือกค่าที่มากกว่า 1 มาดูจะได้ตำแหน่งจากจุดท้ายที่เลขไม่เรียงลำดับ พร้อมกับบอกว่าหายไปกี่เลข เช่นตรง เลข 98 จะขึ้น 2 ก็หมายความว่า มีเลขหายไปหลังจากเลขนี้ 1 เลข (2-1 เพราะมันห่างทีละ 1) นั่นก็คือ 99 หรือตรงเลข 197 ขึ้นเลข 5 ก็หมายถึง มีลำดับเลขหายไป 4 เลข (5-1) คือ 198 199 200 201 แบบนี้เป็นต้น
ใช้สูตร IF
หรือถ้าอยากจะให้ดูเท่ แต่ไร้ประโยชน์มาก ก็ใส่สูตร อย่างสูตร IF นี่แหละ เอามาทำให้มันยุ่งยากนิดนึง จะได้สูตรว่า
=IF(A3>A2+1,"OH NO", "Yes")
มาจากแนวคิดเดิมเลย คือ ตัวล่าง (ในตัวอย่างคือ A3) จะต้องเท่ากับ ตัวบน + 1 (คือ A2 +1) ถ้ามันมากกว่าคือผิดแล้ว ให้แสดงผลว่า OH NO ถ้าไม่มากกว่า ให้แสดง Yes
ตรงนี้อย่าลืมว่า มีการเรียงลำดับไว้แล้ว จากน้อยไปมาก
ข้อเสียที่เห็นชัด ๆ คือ วิธีลบกันธรรมดา ๆ ยังบอกได้เลยว่า ตัวเลขที่หายไป หายไปกี่ตัว แต่ถ้าใช้วิธี IF แบบนี้ จะไม่รู้ว่า ตัวเลขที่หายไปนั้น หายไปกี่ตัว
แต่ปัญหาใหญ่ของวิธีนี้คือ มันแค่แสดงว่าตรงไหนที่ไม่เรียงลำดับ แต่ โจทย์ที่ต้องการคือ หาตัวเลขที่หายไป ดังนั้นที่เขียนมายืดยาวนี้ ไม่ตอบโจทย์
ท่านผู้อ่านคงก่นด่าอยู่ในใจ…แล้วหลอกให้ตูอ่านทำไมตั้งยืดยาว…555+
ความจริงคือที่เขียนไปข้างบน เป็นแนวคิดที่ใช้หาตัวที่หายไปได้นะจ๊ะ คือถ้ามันมีการเรียงลำดับ แล้วเกิดมีจุดไหนที่ไม่เรียงลำดับ นั่นคือสิ่งที่หายไป
ใช้สูตรเพื่อหาตัวเลขที่หายไป
สูตรที่จะแนะนำให้ใช้ จะเขียนแบบนี้
=SMALL(IF(COUNTIF($A$1:$A$496,ROW($1:$496))=0, ROW($1:$496),""),ROW(A1))
แล้วลากลงมา มันจะแสดงตัวเลขที่หายไป จนกว่าจะเห็นช่องสุดท้ายเป็น #Num! นั่นคือหมดแล้ว
(หมายเหตุ Excel เวอร์ชันที่ datarevol ใช้อยู่เป็นเวอร์ชัน 2019 จึงใช้สูตรนี้ได้เลยทั้งที่เป็นการอ้างอิงแบบ Array แต่ถ้าเป็นเวอร์ชันก่อนหน้านั้น จะต้องบอก Excel ให้รู้ด้วยการใส่ { และ } ครอบหน้าหลังเอาไว้ หรือ กด Ctrl +Shift + Enter จึงจะใช้งานได้)
แนวคิดของสูตร
สูตรนี้ หาตัวเลขที่หายไป โดยใช้ฟังก์ชัน SMALL IF COUNTIF ROW ผสมกัน โดย จะใช้ตัวเลขจาก $A$1:$A$496 คือ Cell จาก A1 ถึง A496 (นับจำนวนจากแถวสุดท้ายที่มีข้อมูล ตัวอย่างนี้อยู่ในคอลัมน์ A มีข้อมูล 495 ข้อมูล + 1 หัวคอลัมน์
ซึ่งตัวเลขเหล่านี้ จะตรวจสอบกับจำนวนแถวที่สร้างใน ROW($1:$500) นั่นคือเราให้สร้างอาร์เรย์ 1 – 500 ตรงนี้ เราคิดจาก ตัว Sequence Numbers ว่าอยู่ในช่วง 1 – 500 ซึ่งมันจะสร้างเป็นอาร์เรย์ {1;2;3;4; ไปเรื่อย ๆ จนถึง 500} โปรดนึกถึงตอนเราหาด้วยวิธี lookup เราจะสร้างรายการจำนวนเต็มเอาไว้เช็ค นี่แหละ ROW($1:$500) ทำหน้าที่อย่างเดียวกัน
ถ้าตรวจสอบแล้ว มีค่าเท่ากับ 0 (นั่นคือหายไป) ก็ให้ส่งค่านั้นกลับมา ถ้าไม่เท่ากับกับ 0 ก็ไม่ต้องส่งอะไรกลับมา (“”) แล้วก็ให้เรียงลำดับตัวที่หายไปนั้นจากน้อยไปมาก โดยเราจะอ้างอิง ที่ ROW(A1) (โปรดสังเกตว่าตรงนี้จะไม่ตรึงค่าอย่างตำแหน่งอื่นในสูตร) ซึ่งจะส่งกลับค่าตัวที่หายไปน้อยที่สุดลำดับ 1 2 3 ไปจนกว่าจะไม่มี (ขึ้น #Num!)
ขออธิบายเรื่องฟังก์ชันที่ใช้งาน ดังนี้
SMALL
ฟังก์ชัน SMALL นี่ใช้เพื่อส่งกลับค่าที่เล็กที่สุดในอาร์เรย์นั้น มีวิธีการเขียนสูตรคือ
SMALL(array,k)
Array ก็คือค่า Array (เออ แล้วจะอธิบายทำไม) หรือช่วงของข้อมูลตัวเลขที่ต้องการระบุค่าน้อยที่สุดลำดับที่ k
k คือตำแหน่ง (นับจากค่าน้อยที่สุด) ในอาร์เรย์หรือช่วงข้อมูลที่จะส่งกลับ
ดูตัวอย่างละกัน สมมติเรามีค่าในคอลัมน์ A อยู่ 10 ตัวใน cell A2 – A11) เราต้องการหาค่าที่น้อยที่สุดลำดับที่ 1 ในลิสต์นี้ เราจะเขียนสูตรดังนี้
=SMALL(A2:A11,1)
ถ้าหากว่าในอาร์เรย์ หรือ ในลิสต์นั้น มีเลขซ้ำ มันจะนับลำดับด้วยนะ อย่างเช่น เราเขียนสูตร
=SMALL(A2:A11,7)
คือเราจะหาตัวที่มีค่าน้อยที่สุดลำดับที่ 7 จากลิสต์หรืออาเรย์นี้ จะได้ผลลัพธ์กลับมาเป็น 5 เพราะในลำดับตัวเลขนั้น ถ้าเอามาเรียงคือ 1-2-2-3-4-4-5-6-7-10 มีเลขซ้ำก็ยังนับเป็นลำดับอยู่นะจ๊ะ
ผลลัพธ์จะออกมาเป็น #NUM! (หรือค่าผิดพลาด) ถ้าหากว่าลิสต์หรืออาร์เรย์นั้นว่างเปล่า หรือค่าk เกินกว่าจำนวนข้อมูลที่มี เช่นมีข้อมูล 10 ตัว ไปใส่ 11 ก็จะเป็น #NUM! หรือถ้าเผลอใส่ค่า k ≤ 0 ก็จะส่งค่า #NUM! เช่นกัน
ปรับเข้าสูตรหาตัวเลขที่หายไป
เราใช้ SMALL เพื่อให้แสดงค่าตัวที่หายไปน้อยที่สุดเรียงตามลำดับ
ถ้าเราจะหาค่าน้อยที่สุดของ A1 – A496 จะได้สูตรนี้
=SMALL($A$1:$A$496,1)
สูตรนี้คือ หาค่าต่ำสุดลำดับที่ 1 ในช่วงระหว่าง A1 ถึง A496
แต่ ที่เราต้องการ คือ เราจะให้มันแสดงค่าที่หายไป โดยเรียงลำดับจากต่ำมาสูง
ถ้าเราเปลี่ยนการอ้างอิง ตรงเลข 1 ให้กลายเป็น Relative คือเปลี่ยนจาก 1 เป็น A1 เพื่อที่เวลาลากสูตร จะได้เป็น A1 A2 A3… ไปเรื่อย ๆ
ผลลัพธ์ก็จะเหมือน copy ข้อมูล จาก A1 ถึง A496 แบบเป๊ะ ๆ จนกระทั่ง มาถึงเลข 100 (ข้าม 99 ที่หายไป) ผลลัพธ์จะกลายเป็น 101 ไปทันที (เพราะลำดับมันข้ามไป ค่านี้จะแสดงผล -ตามลำดับ-
เราไม่ต้องการ “ผลลัพธ์จากค่า” เราต้องการค่าลำดับ ดังนั้น เราต้องหาสิ่งที่จะส่งค่าอ้างอิงตามลำดับ แทน ซึ่ง การแสดงค่าตามแถว ก็คือฟังก์ชัน ROW นั่นเอง
ซึ่งจะอธิบายต่อไป
ROW
ฟังก์ชัน Row จะส่งกลับหมายเลขแถวของการอ้างอิง เขียนสูตรดังนี้
Row()
ถ้าใส่แค่ Row() จะแสดงผลว่า cell ที่ใส่สูตรไปอยู่ในแถวที่เท่าไหร่ แต่ถ้าใส่ Row(A10) มันก็จะแสดงค่า 10 เพราะเป็นแถวที่ 10
ปรับเข้าสูตร
จากเดิม ที่เราจะอ้างอิง ตรงค่า k ในฟังก์ชัน SMALL เราปรับให้สูตรเป็น
=SMALL($A$1:$A$496,ROW(A1))
เริ่มจาก A1 เพราะจะให้แสดงค่าแถวที่ 1 เรียงลงมาตามลำดับ แต่ สำหรับ Array ที่ใช้ในการค้นหาตัวเลขที่หายไป ต้องใช้ COUNTIF และ IF ผสมกัน
COUNTIF
เป็นฟังก์ชันที่ให้นับถ้าเข้าเงื่อนไข สูตรการเขียนคือ
COUNTIF(ช่วงที่ต้องการนับ, เงื่อนไข)
อย่างเช่น สูตร
=COUNTIF(A1:A460, ">104")
ก็จะหมายถึง ให้นับจำนวนในช่วง A1:A460 ว่าค่าที่มากกว่า 104 มีจำนวนเท่าไหร่ อันนี้ไม่น่ายาก ลองอ่านจากเว็บไมโครซอฟต์ก็ได้
ปรับเข้าสูตร
จากสูตร เราจะใช้ COUNTIF ตรงนี้
COUNTIF($A$1:$A$496,ROW($1:$496))
นั่นคือ A1 ถึง A496 จะเป็นช่วงที่ต้องการนับ และ แถวที่ 1 ถึง 496 จะเป็นเงื่อนไขในการนับ ซึ่งเป็นค่าอาร์เรย์
ใส่เครื่องหมาย $ เพื่อตรึงไม่ให้ขยับ แม้จะมีการลากสูตร
IF
ฟังก์ชัน IF ก็คือ “ถ้า” นี่แหละจ้ะ ถ้าเป็นแบบนี้ให้ทำแบบนี้ ถ้าไม่ใช่แบบนี้ให้เป็นแบบนี้ เป็นทางเลือกสองทาง วิธีการเขียนสูตรก็คือ
=IF (เงื่อนไข, ถ้าเป็นจริงทำอะไร, ถ้าไม่ใช่ให้ทำอะไร)
คำสั่งนี้เป็นคำสั่งที่ใช้กันบ่อยนะ (อย่างน้อยโดยส่วนตัวก็ใช้บ่อย) แต่มีข้อแนะนำว่า ก่อนจะสร้าง IF ให้คำนึงเรื่องตรรกะและการดำเนินการดี ๆ ยิ่งบางทีเราใช้เงื่อนไขซ้อนเงื่อนไข (IF ซ้อน IF) อาจทำให้เกิดความผิดพลาดเกิดขึ้นได้ง่าย
ทุกวันนี้ เราสามารถใช้ฟังก์ชัน IF ซ้อนกันได้ถึง 64 ชั้น แต่ ไม่แนะนำให้ทำ IF ซ้อนกันหลายครั้ง ต้องระมัดระวัง และตรวจสอบให้แน่ใจว่าตรรกะเหล่านั้น สามารถคำนวณตามเงื่อนไขแต่ละข้อได้ถูกต้อง เพราะที่เคยพบคือ มีช่องโหว่ในการคิดตรรกะ ทำให้เกิดช่องว่างแสดงผลลัพธ์ที่ผิดจากลำดับการใช้เงื่อนไข
และที่สำคัญ ถ้าท่านใช้ IF ซ้อนกันหลายชั้นมาก อาจจะงงเองในภายหลังว่าเขียนอะไรไป คนอื่นที่เข้ามาแกะสูตรอาจจะไม่รู้ด้วยซ้ำว่าใช้ทำอะไรบ้างในแต่ละชั้น
ยกตัวอย่างการใช้ IF เพื่อตัดเกรดคะแนน A B C D และ F จะเป็นการสร้าง IF ซ้อน IF หลายชั้น ดังนี้
=IF(B2>89,"A",IF(B2>79,"B",IF(B2>69,"C",IF(B2>59,"D","F"))))
ปรับให้เข้าสูตร
สูตรที่เขียน เราจะให้หาว่า ค่าในอาร์เรย์จาก COUNTIF ที่ได้มานั้น เท่ากับศูนย์หรือเปล่า
IF(COUNTIF($A$1:$A$496,ROW($1:$496))=0,ROW($1:$496),””) ถ้าค่าที่ได้ เท่ากับ ศูนย์ ค่านั้นคือค่าที่หายไป ให้ส่งกลับค่านั้นมานะ ถ้าไม่เท่ากับศูนย์ก็ไม่ต้องแสดงค่าอะไร
UPDATE:
อธิบายขั้นตอนการทำงานของสูตรอีกที ง่าย ๆ
จากที่เขียนไปยืดยาวข้างต้น บางท่านอ่านแล้วจะอาจจะงงว่าอะไรเยอะแยะ แต่ละตัวทำอะไรยังไง (อันนี้คือพยายามอธิบายให้บางคนฟังแล้วดูจะไม่เข้าใจ ถ้า อธิบายปากเปล่าต่อหน้ากันยังไม่ค่อยเข้าใจ ท่านผู้อ่านบางท่านก็อาจจะมีปัญหาเช่นเดียวกัน ต้องขออภัยที่เป็นคนอธิบายอะไรไม่ค่อยเก่ง)
จะกระจายสูตรให้เห็นชัด ๆ อีกรอบ ให้เห็นว่า การใช้สูตรเพื่อหาตัวเลขที่หายไปเหล่านี้ มีการทำงานอย่างไร ตอนนี้ขอยกตัวอย่างเพียงแค่เลข 10 ตัวก็แล้วกันเนาะ คือ 1 – 10 แล้วจะแกล้งทำเลข 2 และ 7 หาย ไป
เวลาเขียนเป็นสูตร มันจะเป็นดังนี้
=SMALL(IF(COUNTIF($A$1:$A$10,ROW($1:$10))=0,ROW($1:$10),””),ROW(A1))
ถ้ากระจายสูตรนี้ให้เห็นชัด ๆ ก็จะเป็น
$A$1:$A$8 ก็คือ {1;8;4;5;6;3;9;10}
$1:$10 ก็คือ {1;2;3;4;5;6;7;8;9;10}
COUNTIF($A$1:$A$8,ROW($1:$10) ก็คือ
COUNTIF( {1;8;4;5;6;3;9;10}, {1;2;3;4;5;6;7;8;9;10})
ซึ่งจะได้ผลลัพธ์มาเป็นอาร์เรย์แบบนี้
{1;0;1;1;1;1;0;1;1;1}
คือ เรียงลำดับ 1 – 10 อันไหนมีเป็น 1 อันไหนไม่มีเป็น 0 จากตัวอย่างนี้ จะเป็น 0 ตรงลำดับที่ 2 กับ ลำดับที่ 7 ที่หายไป ไม่มี 2 เลขนี้ในเซลล์ A1 ถึง A8
IF(COUNTIF($A$1:$A$8,ROW($1:$10))=0,ROW($1:$10),””) ก็จะได้
IF({1;0;1;1;1;1;0;1;1;1}=0, {1;2;3;4;5;6;7;8;9;10},””)
ก็คือ ถ้าลำดับไหนเท่ากับ 0 ให้แสดงค่าลำดับนั้น (ตามอาร์เรย์) ไม่งั้นก็ไม่ต้องส่งค่าอะไรกลับ
ผลลัพธ์ของสูตร IF จะออกมาแบบนี้
{“”;2;””;””;””;””;7;””;””;””}
เอาไปแทนค่าใน SMALL
=SMALL({“”;2;””;””;””;””;7;””;””;””},ROW(A1))
ซึ่ง ณ Cell แรกสุด (B1ในตัวอย่าง) ค่า ROW(A1) ก็คือ 1
=SMALL({“”;2;””;””;””;””;7;””;””;””},1)
ก็จะส่งผลลัพธ์มาเป็น 2 คือค่าตัวเลขที่น้อยที่สุด ลำดับที่ 1
พอลากสูตรมา ช่อง B2 ค่า จะกลายเป็น ROW(A2) ก็คือ 2
=SMALL({“”;2;””;””;””;””;7;””;””;””},2)
ก็จะส่งผลลัพธ์มาเป็น 7 คือค่าตัวเลขที่น้อยที่สุด ลำดับที่ 2
พอลากสูตรมา ช่อง B3 ค่า จะกลายเป็น ROW(A3) ก็คือ 3
ซึ่ง ไม่มีตัวเลขอะไรในลำดับ 3 แล้ว มันก็ส่งค่า #NUM! ออกมา
หวังใจว่าการอธิบายนี้จะช่วยให้เข้าใจที่มาของสูตรได้มากขึ้น
สูตรนี้จะวางไว้บนสมมติฐานว่า เลขเป็นเลขเรียงลำดับและไม่มีเลขซ้ำ ยังไม่ได้ตรวจสอบว่า ถ้าเป็นเลขซ้ำ จะเป็นอย่างไรหรือไม่ ปกติงานที่ทำจะใช้เลขเรียงลำดับโดยไม่ซ้ำ นะจ๊ะ
Alternative Way
จากสูตรนี้
=SMALL(IF(COUNTIF($A$1:$A$496,ROW($1:$496))=0,ROW($1:$496),””),ROW(A1))
เราเปลี่ยนเป็น
= SMALL(IF(ISNA(MATCH(ROW(A$1:A$496),A$1:A$496,0)),ROW(A$1:A$496)),ROW(A1))
ที่เขียนอธิบายไปยืดยาว เราสามารถปรับเปลี่ยนสูตรไปได้เหมือนกัน โดยยังคงแนวคิดเดิมอยู่ คือ ใช้ SMALL IF
แต่แทนที่จะใช้ COUNTIF เราเปลี่ยนมาเป็น MATCH เพื่อจับกับตัวเลขที่สร้างขึ้น แล้วเราหาตัวที่หายไปด้วย ISNA
MATCH
ฟังก์ชันนี้เคยอธิบายไปแล้ว รบกวนกลับไปอ่านนิดนึง
เราจะ MATCH กับตำแหน่งลำดับที่สร้างขึ้นจาก ROW(A$1:A$496) ซึ่งตัวที่ไม่สามารถ MATCH กันได้ มันจะขึ้น #N/A เรานับตำแหน่งของค่าที่ขึ้น #N/A แล้วเอาไปแทนตรง COUNTIF ได้เลย
ISNA
ฟังก์ชันนี้ จะส่งค่าที่เป็น #N/A กลับมา รูปแบบสูตร คือ
ISNA(Value)
ดูฟังก์ชัน IS ต่าง ๆ ได้ที่ เว็บของไมโครซอฟต์
ถ้าเราใช้ ISNA + MATCH ก็จะมีค่าไม่ต่างกับ COUNTIF
เลือกวิธีไหน?
สำหรับการหาตัวเลขที่หายไปนี้มีหลายวิธี ตามที่แสดงให้เห็นข้างต้น ฝากไว้ให้เห็นว่า วิธีการหาสูตรเพื่อตอบโจทย์มันมีมากกว่า 1 วิธี นะจ๊ะ