MID ตัดข้อความออกจากตำแหน่งเริ่มต้นที่คุณกำหนด โดยระบุความยาวของข้อความที่ต้องการ สะดวกมากสำหรับดึงข้อมูลบางส่วนจากข้อความที่ยาว เช่น รหัสสินค้า, รหัสพนักงาน, หรือวันที่ที่ฝังตัวในข้อความ
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| text | Text | ข้อความหรือเซลล์ที่ต้องการดึงข้อความจาก เช่น “Product ID” หรือ A2 |
| start_num | Number | ตำแหน่งของตัวอักษรตัวแรกที่จะเริ่มดึง โดยการนับเริ่มจาก 1 (ไม่ใช่ 0) |
| num_chars | Number | จำนวนตัวอักษรที่ต้องการดึงออกมา หากเกินจำนวนตัวอักษรที่เหลือ จะดึงเท่าที่มีอยู่ |
MID เป็นฟังก์ชันดึงข้อความสำหรับ “ตัดเอาตรงกลาง” นั่นเอง คุณใช้มันเพื่อดึงตัวอักษรจากตำแหน่งใดก็ได้ในข้อความ เพียงบอกว่าต้องการเริ่มจากตำแหน่งไหน และต้องการดึงกี่ตัวอักษร
ที่เจ๋งคือ MID ไม่มีการตรวจสอบข้อผิดพลาดแบบเข้มงวด ถ้าคุณขอตัวอักษรมากกว่าที่มีอยู่ มันจะให้เท่าที่มี ถ้า start_num เกินความยาวข้อความ มันจะให้ค่าว่างแทนจะ Error ซึ่งช่วยแก้ปัญหากับข้อมูลที่ยาวไม่เท่ากันได้ดี 😎
เช่น รหัสพนักงาน 'EMP-FY23-001' ต้องการแยก 'FY23' ออกมาเพื่อวิเคราะห์ปีงบประมาณ
หากวันที่ถูกเก็บอยู่ในรูปแบบ 'Invoice_20240115_ABC' สามารถใช้ MID ดึง '20240115' ออกมาเพื่อแปลงเป็นวันที่จริงได้
เริ่มจากตำแหน่งที่ 1 (ตัว 'F') ดึงมา 5 ตัวอักษร ได้ "Fluid"
สมมติ A2 มีค่า "LOC-A123-XL" ที่ตำแหน่งที่ 5 (หลัง "LOC-") คือ "A" ดึงมา 4 ตัวอักษร ได้ "A123" ซึ่งเป็นรหัสสินค้า
สมมติ A2 = "INV-2025-12-001" ใช้ FIND หาตำแหน่งขีดตัวแรก (+1 เพื่อข้ามขีด) แล้วดึงมา 4 ตัว ได้ปี "2025" โดยไม่ต้องกำหนดตำแหน่งคงที่
สมมติ A2 = "INV-2025-12-001" ใช้ FIND สองครั้งเพื่อหาตำแหน่งขีดตัวแรกและตัวที่สอง แล้วคำนวณจำนวนตัวอักษรระหว่างนั้น ได้ "2025" (ข้อความระหว่างขีดสองตัว)
Excel ใช้ระบบ 1-based indexing (นับเริ่มจาก 1) ต่างจากภาษา Python หรือ JavaScript ที่ใช้ 0-based indexing ดังนั้นตัวอักษรตัวแรกจะอยู่ที่ตำแหน่งที่ 1 เสมอ
MID จะคืนค่าเป็นข้อความว่าง (empty text) โดยไม่เกิด error ซึ่งดีมากสำหรับสูตรที่ยืดหยุ่น
จะเกิด Error #VALUE! โดยตรง num_chars ต้องเป็นเลขบวกเสมอ
LEFT ดึงจากด้านซ้าย RIGHT ดึงจากด้านขวา แต่ MID ดึงจากตำแหน่งใดก็ได้ตรงกลาง ส่วนใหญ่ใช้ MID มากกว่าเพราะมีความยืดหยุ่นมากขึ้น
ฟังก์ชันที่ผู้เขียนโยงไว้กับ MID จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
ส่งกลับรหัส ASCII (ANSI code) ของตัวอักษรตัวแรกในข้อความ ตรงข้ามกับฟังก์ชัน CHAR
CONCAT รวมข้อความจากหลายเซลล์ หรือช่วงข้อมูลเข้าด้วยกัน โดยไม่มีตัวคั่นอัตโนมัติ ต่างจาก CONCATENATE ที่ต้องระบุทีละเซลล์ CONCAT ใช้ได้กับช่วง Range ทำให้การรวมข้อมูลขนาดใหญ่ง่ายกว่า
CONCATENATE เป็นฟังก์ชันแบบเก่าที่ใช้นำข้อความ ตัวเลข หรือค่าจากเซลล์ต่างๆ มาต่อกันให้เป็นข้อความยาวๆ เพียงเส้นเดียว ปัจจุบันสามารถใช้เครื่องหมาย & หรือฟังก์ชัน CONCAT/TEXTJOIN ซึ่งสะดวกกว่าได้
FIND ค้นหาตำแหน่งเริ่มต้นของคำที่ต้องการภายในข้อความหลัก โดยสนใจตัวพิมพ์เล็ก-ใหญ่ (เช่น "A" ไม่เหมือนกับ "a") ถ้าค้นหาไม่เจอจะคืนค่า Error #VALUE! มักใช้ร่วมกับ MID, LEFT, RIGHT เพื่อตัดคำตามตำแหน่ง
LEFT ดึงตัวอักษรจากด้านซ้ายสุดของข้อความตามจำนวนที่ต้องการ ถ้าไม่ระบุจำนวนจะดึงมา 1 ตัว ผลลัพธ์เป็น Text เสมอแม้ดึงตัวเลขออกมา
LEN คืนค่าเป็นตัวเลขจำนวนเต็ม แสดงความยาวของข้อความในเซลล์ มีประโยชน์มากในการตรวจสอบความถูกต้องของข้อมูล (Data Validation) เช่น เช็ครหัสพนักงาน, เบอร์โทรศัพท์, หรือเลขบัตรประชาชน ว่ามีความยาวครบถ้วนหรือไม่
REGEXEXTRACT เป็นฟังก์ชันสำหรับดึงข้อความย่อย (Substring) ที่ตรงกับรูปแบบ Regular Expression (Regex) ที่กำหนด เหมาะสำหรับการทำ Data Cleaning ขั้นสูง
REGEXREPLACE ค้นหาและแทนที่ข้อความจากรูปแบบ Regular Expression ใช้สำหรับ Data Cleaning ที่ซับซ้อน เหมาะสำหรับ Excel 365 รองรับ backreferences
REPLACE แทนที่ข้อความจากตำแหน่งที่กำหนด โดยระบุตำแหน่งเริ่มต้น จำนวนตัวอักษรที่ต้องการลบ และข้อความใหม่ที่จะใส่แทน แตกต่างจาก SUBSTITUTE ที่ค้นหาคำที่ตรงตามความพึงพอใจ REPLACE ใช้ตำแหน่งแน่นอน
RIGHT จะคืนค่าเป็นข้อความ (Text) ที่ถูกตัดมาจากด้านขวาสุดของข้อความต้นฉบับตามจำนวนที่ระบุ ถ้าไม่ระบุจำนวน ฟังก์ชันจะดึงมาเพียง 1 ตัวอักษร
.
ที่เจ๋งคือสามารถใช้ร่วมกับ LEN หรือ FIND เพื่อตัดข้อความแบบไดนามิกได้ ผลลัพธ์ที่ได้จะเป็น Text เสมอ ถ้าต้องการนำไปคำนวณต่อ ต้องแปลงเป็นตัวเลขก่อนครับ
SEARCH ค้นหาตำแหน่งของคำที่ต้องการในข้อความหลัก ถ้าเจอคืนตัวเลขตำแหน่งที่พบ ถ้าไม่เจอคืน #VALUE! ต่างจาก FIND ตรงที่ไม่แยกแยะตัวพิมพ์เล็ก-ใหญ่ (A=a) และใช้ wildcard (* กับ ?) ค้นหาแบบมีรูปแบบได้ เอาไปต่อกับ ISNUMBER ก็กลายเป็นสูตรเช็คว่าเซลล์มีคำนี้อยู่หรือไม่ ซึ่งเป็นวิธีที่ใช้กันบ่อยที่สุดในงานจัดหมวดหมู่หรือกรองข้อมูลจากคำสำคัญ
SUBSTITUTE ค้นหาคำเก่า (old_text) ในข้อความแล้วแทนที่ด้วยคำใหม่ (new_text) โดยแยกแยะตัวพิมพ์เล็ก-ใหญ่ (case-sensitive) และเลือกได้ว่าจะแทนที่ทุกจุดที่เจอ หรือเฉพาะลำดับที่ระบุผ่าน instance_num งานที่ใช้บ่อยคือลบตัวคั่นออกจากตัวเลขที่ถูกเก็บเป็นข้อความ เปลี่ยนโดเมนอีเมลหลังรีแบรนด์ หรือล้างอักขระที่พิมพ์มาผิดรูปแบบก่อนนำไปคำนวณต่อ
TEXT ใช้รหัสรูปแบบ (Format Codes) เช่น "dd/mm/yyyy" สำหรับวันที่ หรือ "#,##0.00" สำหรับตัวเลขมีทศนิยม ผลลัพธ์ที่ได้จะเป็นข้อความ (Text) เสมอ ไม่สามารถนำไปคำนวณต่อได้
TEXTAFTER ดึงข้อความหลังจากตัวคั่นที่ระบุ รองรับการเลือกลำดับตัวคั่น (instance_num) การค้นหาแบบ case-insensitive (match_mode) และค่า default เมื่อไม่พบ (if_not_found) ทำให้แยกข้อมูลได้ง่ายกว่า MID+FIND ใช้คู่กับ TEXTBEFORE TEXTSPLIT
TEXTBEFORE ดึงข้อความก่อนหน้าตัวคั่นที่ระบุ รองรับการเลือกลำดับตัวคั่น (instance_num) การค้นหาแบบ case-insensitive (match_mode) และค่า default เมื่อไม่พบ (if_not_found) ทำให้แยกข้อมูลได้ง่ายกว่า LEFT+FIND ใช้คู่กับ TEXTAFTER TEXTSPLIT
TEXTSPLIT เป็นฟังก์ชัน Dynamic Array ที่ช่วยแยกข้อความในเซลล์ออกเป็นอาร์เรย์ของค่า (Spill) ตามตัวคั่นที่ระบุ สามารถแยกข้อมูลออกไปทางขวา (คอลัมน์) หรือลงด้านล่าง (แถว) หรือทั้งสองอย่างพร้อมกัน เหมาะสำหรับการจัดการข้อมูลนำเข้าที่รวมกันอยู่ในเซลล์เดียว
TRIM ลบช่องว่างที่ด้านหน้า ด้านหลัง และลดช่องว่างระหว่างคำให้เหลือเพียงเคาะเดียว เหมาะสำหรับทำความสะอาดข้อมูลที่ Copy จากเว็บหรือระบบอื่น
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่