วันพฤหัสบดีที่ 5 พฤศจิกายน พ.ศ. 2552

FIND และ SEARCH

FIND ใช้หาตำแหน่ง ของตัวเลข หรือตัวอักษร หรืออักขระใดๆในเซลล์นั้นๆ
ไวยากรณ์
=FIND(find_text,within_text,start_num)
=FIND(ตำแหน่งสิ่งที่ต้องการหา,เซลล์อ้างอิง,เริ่มนับจากตัวที่..)
ตัวอย่าง



กรณี เป็นตัวเลข จะพิมพ์ " " ปิดหน้า หลัง สิ่งที่ต้องการหาตำแหน่งในเซลล์นั้นๆ หรือไม่มีก็ได้




กรณี มีตัวที่ซ้ำกันในเซลล์ใดๆ ต้องระบุ ว่าให้เริ่มนับจากตำแหน่งใด
เช่น คำว่า Allocation ถ้าให้เริ่มนับ ที่ตัวที่ 1 จะได้ o อยู่ตำแหน่งที่ 4
ถ้าต้องการหาตำแหน่ง ของ o ตัวหลัง ต้องให้นับจากตำแหน่งที่เกิน 4 ไปแล้ว




FIND จะมีผลต่อการอ่านค่า ตัวพิมพ์ เล็ก พิมพ์ใหญ่ ในภาษาอังกฤษด้วย
เช่น Star ถ้าให้หาตำแหน่ง "s" (ตัวพิมพ์เล็ก) จะหาค่าไม่ได้
หรือ Desktop ถ้าให้หา ตำแหน่ง "K" ( ตัวพิมพ์ใหญ่) จะหาค่าไม่ได้





หากต้องการตัดเรื่อง ตัวพิมพ์เล็ก หรือ พิมพ์ใหญ่ ในภาษาอังกฤษ ให้เลี่ยงไปใช้ ฟังก์ชั่น SEARCH แทน

ฟังก์ชั่น SEARCH มีไวยากรณ์ เหมือนกันกับ FIND
=SEARCH(find_text,within_text,start_num)
=SEARCH(ตำแหน่งสิ่งที่ต้องการหา,เซลล์อ้างอิง,เริ่มนับจากตัวที่..)


ตัวอย่าง
จาก ตัวอย่างเดิม สังเกตุว่า การพิมพ์ ตัวพิมพ์เล็กหรือ พิมพ์ใหญ่ จะไม่มีผลต่อการหาตำแหน่ง
โดยการใช้ฟังก์ชั่น SEARCH





กรณีเป็นตัวเลข จะเลือกใช้ FIND หรือ SEARCH จะได้ผลลัพท์ไม่แตกต่างกัน
ดังนั้นการจะเลือกใช้ FIND หรือ SEARCH ก็เลือกเอาแล้วแต่ชอบ

ตัวอย่าง เช่น




ตัวอย่างการนำ FIND หรือ SEARCH ไปใช้

จากตารางด้านล่างนี้ ให้แยกคำออกมา จากการเว้นวรรค ให้ไปอยู่คนละคอลัมน์ กรณีนี้เจอบ่อยๆในเรื่องการ แยก ชื่อ และนามสกุลให้ออกจากกันเป็นต้น หรือ แยก User ID ออกจาก Name เป็นต้น


จะแสดงการใช้ ฟังก์ชั่นSEARCH หรือ FIND ร่วมกับบางฟังก์ชั่น ที่เราพอรู้กันแล้วมาประยุกต์ใช้ เช่น LEN ,LEFT,RIGHT ส่วนรายละเอียดของสูตรจะไม่อธิบายละเอียดในที่นี้ ลองหัดแกะสูตรดู (หัดอ่านล็อกเอง) หากยัง สับสนในวิธีการใช้ของแต่ละสูตร ขอให้กลับไปอ่านบทความเก่าๆ ที่เขียนไว้ก่อนหน้านี้


การกระจายสูตรออกมาแบบนี้นั้น อาจจะดูยุ่งยาก แต่แท้จริงแล้วกลับเป็นวิธีที่ง่ายที่สุดในการตรวจสอบ
และหากคล่องเรื่องสูตร มากขึ้น หรือมองภาพได้ชัดเจนขึ้นจะรวบสูตรเข้ามาให้กระชับ อาจจะเขียนออกมาได้ประมาณนี้



การแยกคำออกมาแบบนี้นั้น หากไม่ใช้สูตรดังที่ว่ามา อาจจะเลือกใช้สิ่งที่ โปรแกรม Excel มีไว้ให้แล้ว คือ Data--->Text to Columns..
โดยทำดังนี้
1.คลุมพื้นที่ข้อมูลทั้งหมด
2. Data --->Text to Columns…
3. Next
4. ติ๊กเครื่องหมายถูก ที่ช่องสี่เหลี่ยมเล็กๆหน้าคำว่า Space
5. Next
6.Finish
ลองทำดู (หนูทำได้)....

อีกซักตัวอย่าง ที่เจอบ่อยๆ คือการแยกขนาดของความกว้าง ยาว สูง ออกจากกันเป็น 3 คอลัมน์ เพื่อนำผลลัพท์ไปใช้ต่อได้ง่ายขึ้น เช่น



หลักการเดียวกันกับตัวอย่างที่ผ่านมา คือ หากไม่ต้องการใช้สูตร ก็สามารถใช้ Data --->Text to Columns
ได้เช่นกัน ดังนี้
1.คลุมพื้นที่ข้อมูลทั้งหมด
2. Data --->Text to Columns…
3. Next
4. ติ๊กเครื่องหมายถูก ที่ช่องสี่เหลี่ยมเล็กๆหน้าคำว่า Other
แล้วพิมพ์ x ลงในช่อง สี่เหลี่ยม (เงื่อนไขที่ต้องการให้แยก)
5. Next
6.Finish

กรณีที่ใช้สูตรแยก



จะอธิบาย แถวที่ 9 ในภาพ เพียงแถวเดียว เป็นหลัก ส่วนแถวอื่นๆนั้น สามารถ Copy สูตร จากแถวที่ 9 ลงไปได้เลย
ให้มองหาเงื่อนไข หรือสะพาน ที่จะใช้แยกออกมา ในที่นี้ "x" 2 ตัว คือสะพานที่เราต้องใช้
ดังนั้นจึงต้องหา ตำแหน่งของสะพาน "x" ทั้ง 2 ตัวออกมา โดยการใช้ ฟังก์ชั่น SEARCH

x ตัวที่ หนึ่ง =SEARCH("x",B9,1) ต้องการหาตำแหน่งของ x ในเซลล์ B9 โดยนับจากตัวที่ หนึ่ง

x ตัวที่ สอง =SEARCH("x",B9,C9+1) x ตัวที่ สอง ต้องเริ่มนับจากตำแหน่งหลังจาก ตำแหน่งของ x ตัวที่ หนึ่ง ดังนั้น จึงต้อง ใช้ตำแหน่งของ x ตัวที่ หนึ่ง บวก 1

หาความกว้าง =LEFT(B9,C9-1)+0 นับจากทางซ้ายมาถึงตำแหน่งก่อน x ตัวที่ หนึ่ง ดังนั้นจึงต้องเอา ตำแหน่งของ x ตัวที่ หนึ่ง ลบ 1

หาความยาว =MID(B9,C9+1,D9-C9-1)+0 นับจากตำแหน่งหลัง x ตัวที่ หนึ่งดังนั้นจึงต้องเอา ตำแหน่งของ x ตัวที่ หนึ่ง บวก 1 นับมากี่ตัว ....? นับมาถึงก่อนตำแหน่งของ x ตัวที่ สอง ดังนั้นจึงต้อง เอา ตำแหน่งของ x ตัวที่ สอง ลบ ตำแหน่งของ x ตัวที่ หนึ่ง และ ลบด้วย 1 (หลักการ นับจำนวนที่อยู่ระหว่างหัว ท้าย ต้องเอา ท้าย ลบ หัว ลบ 1.. เช่น จำนวนนับที่อยู่ระหว่าง 3 ถึง 8 ก็คือ 8-3-1 = 4 ตัวนั่นเอง ไม่นับ 3 และ 8)

หาความสูง =RIGHT(B9,LEN(B9)-D9)+0 นับจากด้านขวาของเซลล์ จำนวนที่นับคือที่เหลือจาก จำนวนทั้งหมด ลบด้วยตำแหน่งของ x ตัวที่ สอง

ในสูตร LEFT ,RIGHT,MID ข้างบนนั้น จะ บวกด้วย 0ไว้ด้วย
เนื่องจาก Excel จะมองเห็นตัวเลขมาจาก สูตร LEFT,RIGHT,MID เป็น Text เสมอ การ บวกด้วย 0 นั้นจะทำให้เปลี่ยนสัญชาติจาก Text เป็น Number โดยอัตโนมัติ

แต่อย่างไรก็ตาม การบวกด้วย 0 อาจจะไม่จำเป็น เนื่องจาก ตัวเลขที่ได้จากสูตร แม้จะถูกมองเป็น Text ในบางกรณีก็ยังสามารถนำไป คำนวณต่อได้อยู่ดี

ที่แสดงไว้ ก็เพียงเพื่อเป็นแนวทางให้ทราบว่า มันถูกมองเป็น Text และเพื่อความมั่นใจว่า สิ่งที่ได้ออกมาจากสูตร เป็น Number ก็ให้บวกด้วย 0 ต่อท้ายสูตร หรือจะคูณด้วย 1 ก็ได้ผลลัพท์เช่นเดียวกัน หรือจะใช้เครื่องหมายลบ(-)ติดกันสองอันหลังเครื่องหมายเท่ากับในสูตรก็ยังได้


ดังนี้



=--LEFT(B9,C9-1)
=--MID(B9,C9+1,D9-C9-1)
=--RIGHT(B9,LEN(B9)-D9)


ตัวอย่าง การนำไปประยุกต์ใช้


จะแสดงการแยกสูตรและการวบสูตรเข้าไว้ด้วยกัน