ฟังก์ชันค้นหา Find – Search เป็นฟังก์ชันสำหรับค้นหา ข้อความ หรือ อักขระ ที่ต้องการ จาก ข้อความต่าง ๆ โดยจะส่งผลลัพธ์เป็นตำแหน่งของข้อความหรืออักขระนั้น (เช่น 1 2 3 4…) ทั้ง Find และ Search มีไวยากรณ์การเขียนเหมือนกัน ใช้งานเหมือนกัน แต่มีบางอย่างที่ไม่เหมือนกัน
Find
ฟังก์ชันค้นหา Find นี้ มีเพื่อหาตำแหน่งของอักขระหรือข้อความที่ต้องการ จะมีอยู่ 2 แบบ คือ FIND กับ FINDB โดยทั้ง 2 ตัวนี้ ใช้งานเหมือนกันทุกประการ เพียงแค่ FIND ออกแบบมาใช้กับภาษาที่ใช้ single-byte character set (SBCS) ส่วนFINDB ออกแบบมาให้ใช้กับภาษาที่ใช้ double-byte character set (DBCS)
หรือจำง่าย ๆ ถ้าใครใช้ภาษาไทย อังกฤษ ทั่วไป ใช้ FIND แต่ถ้าเป็นภาษาที่มีความซับซ้อนเช่น จีน เกาหลี ญี่ปุ่น ใช้ FINDB
อ่านเพิ่มเติม
- single-byte character set https://en.wikipedia.org/wiki/SBCS)
- double-byte character set https://en.wikipedia.org/wiki/DBCS
ไวยากรณ์ฟังก์ชัน
FIND (find_text, within_text, [start_num])
find_text คือ อักขระ หรือ ข้อความที่ต้องการหา (ถ้าเป็นภาษาอังกฤษ ตัวพิมพ์เล็ก ตัวพิมพ์ใหญ่จะถือเป็นคนละตัว)
within_text คือ หา อักขระ หรือ ข้อความ นั้นจากไหน
[Start_num] คือ ตำแหน่งเริ่มต้นสำหรับการค้นหา เป็นปัจจัยเสริมที่ไม่ใส่ก็ได้ ถ้าไม่ใส่จะเริ่มต้นหาจากอักขระแรกทางซ้ายมือ
Tips: อย่าลืมว่า ช่องว่าง (space) ก็นับเป็น 1 อักขระ
ตัวอย่าง
ในเซลล์ A1 ใส่ข้อความว่า Life Is What Happens When You’re Busy Making Other Plans แล้วเราต้องการหาว่า ตัวอักษร H อยู่ในลำดับที่เท่าไหร่ จะเขียนสูตรดังนี้
=FIND("H",A1)
นั่นคือ การหา ตัว H ใน A1 ซึ่งก็คือ การหาตัว H จากประโยค Life Is What Happens When You’re Busy Making Other Plans
ซึ่งจะให้ผลลัพธ์เป็น 14 คือตัว H แรกที่พบ คือ ตัว H จาก Happens
สำหรับภาษาอังกฤษ ถ้าใช้ฟังก์ชัน find ตัวอักษรพิมพ์ใหญ่ พิมพ์เล็ก จะถือว่าเป็นคนละตัวกัน ดังเช่นในตัวอย่าง เราให้หา H ถึงแม้จะมีตัว h จาก What อยู่ก่อน H จาก Happens จะไม่แสดงผลค่า h
หากต้องการค้นหาโดยไม่กำหนด ตัวพิมพ์เล็ก พิมพ์ใหญ่ ให้ใช้ฟังก์ชัน search แทน
อีกตัวอย่างหนึ่ง
=FIND("e",A1,10)
นั่นคือ หาอักขระ e ใน A1 โดยเริ่มจากอักขระที่ 10 จะได้ผลลัพธ์เป็น 18 นั่นคือ e จาก Happens โดยจะข้าม e ลำดับที่ 4 จาก Life ไป เพราะเราบังคับให้หาจากตำแหน่งที่ 10 เป็นต้นไป
และอีกตัวอย่างหนึ่ง
=FIND("H",A1,16)
ให้ค้นหา H ใน A1 โดยเริ่มจากอักขระที่ 16 จะได้ผลลัพธ์เป็น #VALUE! นั่นคือไม่พบสิ่งที่ให้ค้นหา เพราะตัว H ในข้อความที่ Life Is What Happens When You’re Busy Making Other Plans นั้นมี H เพียง 1 ตัว ในลำดับที่ 14 แต่จากสูตรข้างต้น เราให้เริ่มหา H ที่อยู่ตั้งแต่อักขระตำแหน่งที่ 16 เป็นต้นไป ซึ่งไม่มี H
TIPS: ถ้าผลลัพธ์เป็น #VALUE! มีความเป็นไปได้อยู่ไม่กี่อย่าง คือ ใน within_text ที่ต้องการให้ค้นหานั้น ไม่มี find_text อยู่เลย หรือ Start_num เป็น ศูนย์ หรือ ติดลบ หรือ ใส่ตัวเลขมากกว่าจำนวนอักขระใน within_text
ในกรณีที่หาโดยใช้อักขระมากกว่า 1 ตัว ฟังก์ชัน FIND จะส่งตำแหน่งของตัวอักขระแรก
=FIND("ap",A1)
เช่นเราต้องการหาคำว่า ap จะส่งกลับตำแหน่งของตัว a ของ Happens
และการใช้ฟังก์ชัน find จะไม่สามารถใช้ตัว wildcard เช่น *
Search
ฟังก์ชันค้นหา Search มีเพื่อหาตำแหน่งของอักขระหรือข้อความที่ต้องการ คือ SEARCH กับ SEARCHB โดยทั้ง 2 ตัวนี้ ใช้งานเหมือนกันทุกประการ เพียงแค่ SEARCH ออกแบบมาใช้กับภาษาที่ใช้ single-byte character set (SBCS) ซึ่งก็คือเกือบทุกภาษาที่มีรากฐานมาจากอักษรลาติน หรือ โรมัน หรือ ภาษาอังกฤษที่เราคุ้นเคย รวมทั้งภาษาไทยด้วย
ส่วน SEARCHB ออกแบบมาให้ใช้กับภาษาที่ใช้ double-byte character set (DBCS)อย่างเช่น จีน เกาหลี ญี่ปุ่น คือพวกที่เกินข้อจำกัด 256 รูปแบบ ของ single-byte character set
ไวยากรณ์ฟังก์ชัน Search
SEARCH (search_text, within_text, [start_num])
search_text คือ อักขระ หรือ ข้อความที่ต้องการหา
within_text คือ ข้อความ ที่จะใช้ในการค้นหา
[Start_num] คือ ตำแหน่งเริ่มต้นสำหรับการค้นหา เป็นปัจจัยเสริมที่ไม่ใส่ก็ได้ ถ้าไม่ใส่จะเริ่มต้นหาจากอักขระแรกทางซ้ายมือ
โดยทั่วไป ฟังก์ชัน SEARCH จะเหมือนกับฟังก์ชัน FIND แต่มีคุณลักษณะบางประการที่แตกต่างออกไป
Find – Search – แตกต่างกันอย่างไร?
ตัวพิมพ์เล็กใหญ่ไม่มีความหมาย
ในขณะที่ ฟังก์ชัน Find จะถือว่า ตัวพิมพ์เล็ก กับ ตัวพิมพ์ใหญ่ คือ คนละตัวกัน (เช่น H ไม่ใช่ h) แต่ฟังก์ชัน Search จะถือว่า ตัวพิมพ์เล็ก กับ ตัวพิมพ์ใหญ่ จะเป็นตัวเดียวกัน (เช่น H คือ h)
ยกตัวอย่างแบบที่เคยใช้ในฟังก์ชัน Find ดังนี้
ในเซลล์ A1 ใส่ข้อความว่า Life Is What Happens When You’re Busy Making Other Plans แล้วเราต้องการหาว่า ตัวอักษร H โดยเขียนสูตรใช้ฟังก์ชัน SEARCH ดังนี้
=SEARCH("H",A1)
นั่นคือ การหา ตัว H ใน A1 ซึ่งก็คือ การหาตัว H จากประโยค Life Is What Happens When You’re Busy Making Other Plans
ซึ่งจะให้ผลลัพธ์เป็น 10 เพราะตัว H แรกที่พบ คือ ตัว h จาก What แต่ถ้าเปลี่ยนเป็นฟังก์ชัน Find จะกลายเป้น 14 เพราะจะแสดงตำแหน่งของตัว H แบบเฉพาะเจาะจง
ตรงนี้จะเป็นความแตกต่างที่ชัดเจนที่สุด ระหว่างฟังก์ชัน Find กับ SEARCH นั่นคือสำหรับภาษาอังกฤษ ถ้าใช้ฟังก์ชัน find ตัวอักษรพิมพ์ใหญ่ พิมพ์เล็ก จะถือว่าเป็นคนละตัวกัน ในตัวอย่าง Life Is What Happens When You’re Busy Making Other Plans เราให้หา H ถึงแม้จะมีตัว h จาก What อยู่ก่อน H จาก Happens จะไม่แสดงผลค่า h
แต่เมื่อใช้ฟังก์ชัน SEARCH ผลลัพธ์จะเป็น 10 เพราะถึงเราจะให้หา H (ตัวพิมพ์ใหญ่) แต่ SEARCH จะแสดงผลที่ตำแหน่งของ h
WILDCARD
การใช้ฟังก์ชัน find จะไม่สามารถใช้ตัว wildcard เช่น * แต่ใน Search จะใช้ wildcard ในการค้นหาได้ ยกตัวอย่างเช่น
SEARCH(“en”,A1)
จะได้ผลลัพธ์เป็น 18 คือ แสดงผลตำแหน่งของ e ที่คำว่า Heppens
แต่ถ้าเราใส่ * ไว้ด้านหน้า en
SEARCH("*en",A1)
จะได้ผลลัพธ์เป็น 1 เพราะ en แรกที่พบ จากคำว่า Heppens แต่ วรรค หรือ space ถือเป็น 1 อักขระ การเว้นวรรค จึงไม่มีความหมาย ผลลัพธ์จึงแสดงผลเป็นลำดับที่ 1 จากตัว L ของคำว่า Life
แต่ถ้าเขียนเป็น
=SEARCH("w*e",A1)
จะแสดงตำแหน่ง 9 ของ w ตัวแรกที่พบ คือ What ไม่ใช่ When ด้วยเหตุผลเดียวกับที่อธิบายข้างต้นว่า การแบ่งวรรค ไม่ใช่การแบ่งคำใน Search