Thep Excel

MIDตัดข้อความจากตำแหน่งที่ระบุ

MID ตัดข้อความออกจากตำแหน่งเริ่มต้นที่คุณกำหนด โดยระบุความยาวของข้อความที่ต้องการ สะดวกมากสำหรับดึงข้อมูลบางส่วนจากข้อความที่ยาว เช่น รหัสสินค้า, รหัสพนักงาน, หรือวันที่ที่ฝังตัวในข้อความ

fx
=MID(text, start_num, num_chars)

ความนิยม8/10
ความยาก2/10
ประโยชน์9/10

อัปเดต 30 November 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
text Text ข้อความหรือเซลล์ที่ต้องการดึงข้อความจาก เช่น “Product ID” หรือ A2
start_num Number ตำแหน่งของตัวอักษรตัวแรกที่จะเริ่มดึง โดยการนับเริ่มจาก 1 (ไม่ใช่ 0)
num_chars Number จำนวนตัวอักษรที่ต้องการดึงออกมา หากเกินจำนวนตัวอักษรที่เหลือ จะดึงเท่าที่มีอยู่

Additional Notes

MID เป็นฟังก์ชันดึงข้อความสำหรับ “ตัดเอาตรงกลาง” นั่นเอง คุณใช้มันเพื่อดึงตัวอักษรจากตำแหน่งใดก็ได้ในข้อความ เพียงบอกว่าต้องการเริ่มจากตำแหน่งไหน และต้องการดึงกี่ตัวอักษร

ที่เจ๋งคือ MID ไม่มีการตรวจสอบข้อผิดพลาดแบบเข้มงวด ถ้าคุณขอตัวอักษรมากกว่าที่มีอยู่ มันจะให้เท่าที่มี ถ้า start_num เกินความยาวข้อความ มันจะให้ค่าว่างแทนจะ Error ซึ่งช่วยแก้ปัญหากับข้อมูลที่ยาวไม่เท่ากันได้ดี 😎

How it works

แยกรหัสย่อยจาก ID หลัก

เช่น รหัสพนักงาน 'EMP-FY23-001' ต้องการแยก 'FY23' ออกมาเพื่อวิเคราะห์ปีงบประมาณ

แยกข้อมูลวันที่จากข้อความ

หากวันที่ถูกเก็บอยู่ในรูปแบบ 'Invoice_20240115_ABC' สามารถใช้ MID ดึง '20240115' ออกมาเพื่อแปลงเป็นวันที่จริงได้

Examples

ดึงข้อความพื้นฐาน 5 ตัวอักษรMID("Fluid Flow", 1, 5)

เริ่มจากตำแหน่งที่ 1 (ตัว 'F') ดึงมา 5 ตัวอักษร ได้ "Fluid"

fx
=MID("Fluid Flow", 1, 5)

ผลลัพธ์Fluid
ดึงรหัสสินค้าจากข้อความรหัสผสมMID("LOC-A123-XL", 5, 4)

สมมติ A2 มีค่า "LOC-A123-XL" ที่ตำแหน่งที่ 5 (หลัง "LOC-") คือ "A" ดึงมา 4 ตัวอักษร ได้ "A123" ซึ่งเป็นรหัสสินค้า

fx
=MID("LOC-A123-XL", 5, 4)

ผลลัพธ์A123
ดึงปีจากรหัสวันที่แบบปรับปรุงอัตโนมัติMID(A2, FIND("-", A2)+1, 4)

สมมติ A2 = "INV-2025-12-001" ใช้ FIND หาตำแหน่งขีดตัวแรก (+1 เพื่อข้ามขีด) แล้วดึงมา 4 ตัว ได้ปี "2025" โดยไม่ต้องกำหนดตำแหน่งคงที่

fx
=MID(A2, FIND("-", A2)+1, 4)

ผลลัพธ์2025
ดึงข้อความระหว่างขีดสองตัวMID(A2, FIND("-", A2)+1, FIND("-", A2, FIND("-", A2)+1)-FIND("-", A2)-1)

สมมติ A2 = "INV-2025-12-001" ใช้ FIND สองครั้งเพื่อหาตำแหน่งขีดตัวแรกและตัวที่สอง แล้วคำนวณจำนวนตัวอักษรระหว่างนั้น ได้ "2025" (ข้อความระหว่างขีดสองตัว)

fx
=MID(A2, FIND("-", A2)+1, FIND("-", A2, FIND("-", A2)+1)-FIND("-", A2)-1)

ผลลัพธ์2025

FAQs

ทำไม MID ใช้นับตำแหน่งเริ่มจาก 1 ไม่ใช่ 0?+

Excel ใช้ระบบ 1-based indexing (นับเริ่มจาก 1) ต่างจากภาษา Python หรือ JavaScript ที่ใช้ 0-based indexing ดังนั้นตัวอักษรตัวแรกจะอยู่ที่ตำแหน่งที่ 1 เสมอ

ถ้า start_num เกินความยาวข้อความจะเกิดอะไร?+

MID จะคืนค่าเป็นข้อความว่าง (empty text) โดยไม่เกิด error ซึ่งดีมากสำหรับสูตรที่ยืดหยุ่น

ถ้า num_chars เป็นเลขลบจะเกิดอะไร?+

จะเกิด Error #VALUE! โดยตรง num_chars ต้องเป็นเลขบวกเสมอ

MID กับ LEFT และ RIGHT ต่างกันอย่างไร?+

LEFT ดึงจากด้านซ้าย RIGHT ดึงจากด้านขวา แต่ MID ดึงจากตำแหน่งใดก็ได้ตรงกลาง ส่วนใหญ่ใช้ MID มากกว่าเพราะมีความยืดหยุ่นมากขึ้น

Resources & Related

ฟังก์ชันที่ผู้เขียนโยงไว้กับ MID จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้MIDText
Text (17)
CODE

ส่งกลับรหัส ASCII (ANSI code) ของตัวอักษรตัวแรกในข้อความ ตรงข้ามกับฟังก์ชัน CHAR

CONCAT

CONCAT รวมข้อความจากหลายเซลล์ หรือช่วงข้อมูลเข้าด้วยกัน โดยไม่มีตัวคั่นอัตโนมัติ ต่างจาก CONCATENATE ที่ต้องระบุทีละเซลล์ CONCAT ใช้ได้กับช่วง Range ทำให้การรวมข้อมูลขนาดใหญ่ง่ายกว่า

CONCATENATE

CONCATENATE เป็นฟังก์ชันแบบเก่าที่ใช้นำข้อความ ตัวเลข หรือค่าจากเซลล์ต่างๆ มาต่อกันให้เป็นข้อความยาวๆ เพียงเส้นเดียว ปัจจุบันสามารถใช้เครื่องหมาย & หรือฟังก์ชัน CONCAT/TEXTJOIN ซึ่งสะดวกกว่าได้

FIND

FIND ค้นหาตำแหน่งเริ่มต้นของคำที่ต้องการภายในข้อความหลัก โดยสนใจตัวพิมพ์เล็ก-ใหญ่ (เช่น "A" ไม่เหมือนกับ "a") ถ้าค้นหาไม่เจอจะคืนค่า Error #VALUE! มักใช้ร่วมกับ MID, LEFT, RIGHT เพื่อตัดคำตามตำแหน่ง

LEFT

LEFT ดึงตัวอักษรจากด้านซ้ายสุดของข้อความตามจำนวนที่ต้องการ ถ้าไม่ระบุจำนวนจะดึงมา 1 ตัว ผลลัพธ์เป็น Text เสมอแม้ดึงตัวเลขออกมา

LEN

LEN คืนค่าเป็นตัวเลขจำนวนเต็ม แสดงความยาวของข้อความในเซลล์ มีประโยชน์มากในการตรวจสอบความถูกต้องของข้อมูล (Data Validation) เช่น เช็ครหัสพนักงาน, เบอร์โทรศัพท์, หรือเลขบัตรประชาชน ว่ามีความยาวครบถ้วนหรือไม่

REGEXEXTRACT

REGEXEXTRACT เป็นฟังก์ชันสำหรับดึงข้อความย่อย (Substring) ที่ตรงกับรูปแบบ Regular Expression (Regex) ที่กำหนด เหมาะสำหรับการทำ Data Cleaning ขั้นสูง

REGEXREPLACE

REGEXREPLACE ค้นหาและแทนที่ข้อความจากรูปแบบ Regular Expression ใช้สำหรับ Data Cleaning ที่ซับซ้อน เหมาะสำหรับ Excel 365 รองรับ backreferences

REPLACE

REPLACE แทนที่ข้อความจากตำแหน่งที่กำหนด โดยระบุตำแหน่งเริ่มต้น จำนวนตัวอักษรที่ต้องการลบ และข้อความใหม่ที่จะใส่แทน แตกต่างจาก SUBSTITUTE ที่ค้นหาคำที่ตรงตามความพึงพอใจ REPLACE ใช้ตำแหน่งแน่นอน

RIGHT

RIGHT จะคืนค่าเป็นข้อความ (Text) ที่ถูกตัดมาจากด้านขวาสุดของข้อความต้นฉบับตามจำนวนที่ระบุ ถ้าไม่ระบุจำนวน ฟังก์ชันจะดึงมาเพียง 1 ตัวอักษร
.
ที่เจ๋งคือสามารถใช้ร่วมกับ LEN หรือ FIND เพื่อตัดข้อความแบบไดนามิกได้ ผลลัพธ์ที่ได้จะเป็น Text เสมอ ถ้าต้องการนำไปคำนวณต่อ ต้องแปลงเป็นตัวเลขก่อนครับ

SEARCH

SEARCH ค้นหาตำแหน่งของคำที่ต้องการในข้อความหลัก ถ้าเจอคืนตัวเลขตำแหน่งที่พบ ถ้าไม่เจอคืน #VALUE! ต่างจาก FIND ตรงที่ไม่แยกแยะตัวพิมพ์เล็ก-ใหญ่ (A=a) และใช้ wildcard (* กับ ?) ค้นหาแบบมีรูปแบบได้ เอาไปต่อกับ ISNUMBER ก็กลายเป็นสูตรเช็คว่าเซลล์มีคำนี้อยู่หรือไม่ ซึ่งเป็นวิธีที่ใช้กันบ่อยที่สุดในงานจัดหมวดหมู่หรือกรองข้อมูลจากคำสำคัญ

SUBSTITUTE

SUBSTITUTE ค้นหาคำเก่า (old_text) ในข้อความแล้วแทนที่ด้วยคำใหม่ (new_text) โดยแยกแยะตัวพิมพ์เล็ก-ใหญ่ (case-sensitive) และเลือกได้ว่าจะแทนที่ทุกจุดที่เจอ หรือเฉพาะลำดับที่ระบุผ่าน instance_num งานที่ใช้บ่อยคือลบตัวคั่นออกจากตัวเลขที่ถูกเก็บเป็นข้อความ เปลี่ยนโดเมนอีเมลหลังรีแบรนด์ หรือล้างอักขระที่พิมพ์มาผิดรูปแบบก่อนนำไปคำนวณต่อ

TEXT

TEXT ใช้รหัสรูปแบบ (Format Codes) เช่น "dd/mm/yyyy" สำหรับวันที่ หรือ "#,##0.00" สำหรับตัวเลขมีทศนิยม ผลลัพธ์ที่ได้จะเป็นข้อความ (Text) เสมอ ไม่สามารถนำไปคำนวณต่อได้

TEXTAFTER

TEXTAFTER ดึงข้อความหลังจากตัวคั่นที่ระบุ รองรับการเลือกลำดับตัวคั่น (instance_num) การค้นหาแบบ case-insensitive (match_mode) และค่า default เมื่อไม่พบ (if_not_found) ทำให้แยกข้อมูลได้ง่ายกว่า MID+FIND ใช้คู่กับ TEXTBEFORE TEXTSPLIT

TEXTBEFORE

TEXTBEFORE ดึงข้อความก่อนหน้าตัวคั่นที่ระบุ รองรับการเลือกลำดับตัวคั่น (instance_num) การค้นหาแบบ case-insensitive (match_mode) และค่า default เมื่อไม่พบ (if_not_found) ทำให้แยกข้อมูลได้ง่ายกว่า LEFT+FIND ใช้คู่กับ TEXTAFTER TEXTSPLIT

TEXTSPLIT

TEXTSPLIT เป็นฟังก์ชัน Dynamic Array ที่ช่วยแยกข้อความในเซลล์ออกเป็นอาร์เรย์ของค่า (Spill) ตามตัวคั่นที่ระบุ สามารถแยกข้อมูลออกไปทางขวา (คอลัมน์) หรือลงด้านล่าง (แถว) หรือทั้งสองอย่างพร้อมกัน เหมาะสำหรับการจัดการข้อมูลนำเข้าที่รวมกันอยู่ในเซลล์เดียว

TRIM

TRIM ลบช่องว่างที่ด้านหน้า ด้านหลัง และลดช่องว่างระหว่างคำให้เหลือเพียงเคาะเดียว เหมาะสำหรับทำความสะอาดข้อมูลที่ Copy จากเว็บหรือระบบอื่น

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่