Thep Excel

MID – ดึงข้อความจากตรงกลางตามตำแหน่งและจำนวนตัวอักษร

MID คืนสตริงย่อยจากข้อความ โดยเริ่มที่ StartNum (เริ่มนับที่ 1) และดึง NumChars ตัว ใช้บ่อยในการแยก/ตัดข้อความร่วมกับ LEFT/RIGHT/FIND/SEARCH

=MID(<Text>, <StartNum>, <NumChars>)

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
6/10

Difficulty
3/10

Usefulness
6/10

Syntax & Arguments

=MID(<Text>, <StartNum>, <NumChars>)

Argument Type Required Default Description
Text text Yes ข้อความต้นฉบับ (สตริง) สามารถเป็นลิเทอรัลข้อความ หรือ column reference
StartNum number Yes ตำแหน่งเริ่มต้น เริ่มนับที่ 1 (ไม่ใช่ 0) ถ้า StartNum มากกว่าความยาวข้อความ ได้ผลลัพธ์ว่าง
NumChars number Yes จำนวนตัวอักษรที่ต้องการดึง ต้องเป็นเลขบวก ถ้ากำหนดมากกว่าความยาวที่เหลือ จะดึงได้เท่าที่มี

How it works

แยกส่วนของรหัสที่อยู่ตำแหน่งคงที่

เช่น รหัสรูปแบบ ABC-2025-001 ต้องการดึงปี 2025

ดึงข้อความระหว่างตัวคั่น

ใช้ร่วมกับ FIND/SEARCH เพื่อหาตำแหน่งตัวคั่น แล้วใช้ MID ดึงช่วงที่ต้องการ

Examples

ตัวอย่างที่ 1: ดึงตัวอักษร 4 ตัวเริ่มจากตำแหน่งที่ 5
ช่วงกลาง = MID("ABCDEFGHIJ", 5, 4)
ตำแหน่งนับจาก 1 ดังนั้น ตำแหน่งที่ 5 คือ E ดึง 4 ตัว = E, F, G, H
DAX Formula:

ช่วงกลาง = MID("ABCDEFGHIJ", 5, 4)

Result:

ได้ "EFGH"

ตัวอย่างที่ 2: ดึงปีจากรหัสแบบ ABC-2025-001
ปี = MID(Data[Code], 5, 4)
ถ้ารูปแบบรหัสคงที่เป็น ABC-2025-001 ตัวอักษร 4 ตัว ตำแหน่งที่ 5 คือปี
DAX Formula:

ปี = MID(Data[Code], 5, 4)

Result:

ได้ "2025"

ตัวอย่างที่ 3: ดึงข้อความหลังเครื่องหมาย – ตัวแรก (ใช้กับ FIND)
ข้อมูลหลังเครื่องหมาย = VAR dashPos = FIND("-", Data[Code]) RETURN IF( dashPos = 0, BLANK(), MID(Data[Code], dashPos + 1, LEN(Data[Code])) )
FIND หาตำแหน่ง – แล้วใช้ MID ดึงตั้งแต่ตำแหน่งถัดไปไปจนจบ LEN(Data[Code]) – dashPos คำนวณจำนวนตัวอักษรที่เหลือ
DAX Formula:

ข้อมูลหลังเครื่องหมาย = 
VAR dashPos = FIND("-", Data[Code])
RETURN
IF(
  dashPos = 0,
  BLANK(),
  MID(Data[Code], dashPos + 1, LEN(Data[Code]))
)

Result:

ดึงข้อความหลังเครื่องหมาย - แรก

ตัวอย่างที่ 4: ปิดบังรหัสโค้ดสินค้า ให้เห็นแค่ 3 ตัวท้าย
ปิดบังรหัส = "XXX-XX-" & MID(Data[ProductCode], 8, 3)
ใช้ MID ดึงตัวที่ 8-10 แล้วต่อกับ "XXX-XX-" เหมาะสำหรับการปิดบังข้อมูลสำคัญ
DAX Formula:

ปิดบังรหัส = "XXX-XX-" & MID(Data[ProductCode], 8, 3)

Result:

"XXX-XX-123" (ถ้า ProductCode = "ABC-DEF-123")

FAQs

MID เริ่มนับตำแหน่งจาก 0 หรือ 1?

เริ่มนับจาก 1 ไม่ใช่ 0 ดังนั้น MID(“ABC”, 1, 1) ได้ “A” ไม่ใช่ “B” ต่างจากภาษาโปรแกรมมิ่งบางตัวที่เริ่มจาก 0

ถ้า StartNum มากกว่าความยาวข้อความ จะเกิดอะไร?

ได้ผลลัพธ์ว่าง (BLANK) ตัวอย่าง MID(“ABC”, 10, 2) ได้ “” เพราะตำแหน่งที่ 10 อยู่นอกข้อความ

ถ้า NumChars มากกว่าจำนวนตัวอักษรที่เหลือจะเกิดอะไร?

MID จะดึงได้เท่าที่มี เช่น MID(“ABCDE”, 3, 10) ได้ “CDE” (ไม่ใช่ error) เพราะจากตำแหน่งที่ 3 มีแค่ 3 ตัว

ถ้าต้องการดึงจากซ้ายหรือขวา ใช้ฟังก์ชันอะไร?

ใช้ LEFT เพื่อดึงจากซ้าย เช่น LEFT(“ABCDE”, 2) ได้ “AB” และใช้ RIGHT เพื่อดึงจากขวา เช่น RIGHT(“ABCDE”, 2) ได้ “DE”

MID สามารถใช้ในแบบ calculated column ได้ไหม?

ได้ MID ทำงานในทั้ง calculated column, calculated table, measure, และ visual calculation ผมมักใช้ในคำนวณ column เพื่อสร้างคอลัมน์ใหม่ที่ดึงข้อมูลบางส่วน

Resources & Related

Additional Notes

MID เป็นฟังก์ชันดึงข้อความจาก “ตรงกลาง” ของสตริง โดยกำหนดตำแหน่งเริ่มต้น (เริ่มนับที่ 1) และจำนวนตัวอักษรที่ต้องการดึง มันเป็นคู่หูของ LEFT (ดึงจากซ้าย) และ RIGHT (ดึงจากขวา) ใช้เวลาเวลาไหนต้องแยกรหัสที่มีโครงสร้างคงที่ หรือตัดโค้ดที่อยู่ตรงกลางสตริง

ที่เจ๋งคือ MID ร่วมกับ FIND/SEARCH ทำให้คุณหาตำแหน่งตัวคั่น (เช่น “-” หรือ “:”) แล้วดึงข้อมูลระหว่างตัวคั่นได้หมด ผมใช้มันสำหรับแยก SKU, ตัดปีจากรหัสสินค้า, หรือดึงรหัสตัวจริงจากข้อมูลที่มาจากหลายแหล่ง

ส่วนตัวผมถือว่า MID + FIND เป็นคู่หูสุดเก๋า ของการจัดการข้อมูลที่โครงสร้างมั่นคง ผมแนะนำให้เรียนรู้จัดการกับ MID เป็นหนึ่งในทักษะพื้นฐานของการทำความสะอาดข้อมูล

Leave a Reply

Your email address will not be published. Required fields are marked *