ข้อมูลที่ปนตัวเลขกับตัวอักษร เช่น “ราคา 1,250 บาท” หรือ “สินค้า A-4 จำนวน 30 ชิ้น” เอาไปคำนวณตรงๆ ไม่ได้ ต้องดึงเฉพาะตัวเลขออกมาก่อน บทความนี้รวม 3 วิธี ตั้งแต่วิธีใหม่ที่สั้นที่สุดใน Microsoft 365 จนถึงวิธีที่ใช้ได้ทุกเวอร์ชัน
🎬 ดูวิดีโอสอน (1 นาที 27 วินาที) บน Excel จริง หรืออ่านขั้นตอนละเอียดด้านล่างได้เลย
วิธีที่ 1: REGEXEXTRACT (Excel เวอร์ชันใหม่) — สั้นที่สุด
![ตัวอย่างสูตร =REGEXEXTRACT(A2, "[0-9,]+") ใน Excel (ภาพจากหน้าจอจริง)](https://ms365ibex.com/wp-content/uploads/2026/10/excel-extract-numbers-from-text-1-real.png)
รูปแบบ [0-9,]+ หมายถึง “ตัวเลขหรือจุลภาค ติดกันตั้งแต่ 1 ตัวขึ้นไป” ถ้าอยากคำนวณต่อ ให้ครอบด้วย SUBSTITUTE(...,",","")+0 เพื่อลบจุลภาคแล้วแปลงเป็นตัวเลข ดู ฟังก์ชัน REGEX
วิธีที่ 2: TEXTSPLIT แยกด้วยตัวคั่นหลายแบบ
ใช้ได้ดีเมื่อตัวเลขคั่นด้วยช่องว่างหรือสัญลักษณ์ที่แน่นอน

TEXTSPLIT ตัดข้อความตามช่องว่าง แล้วเลือกช่องที่เป็นตัวเลขมาใช้ต่อ เหมาะกับข้อความที่โครงสร้างสม่ำเสมอ
วิธีที่ 3: สูตร array ใช้ได้ทุกเวอร์ชัน
ดึงเฉพาะหลักที่เป็นตัวเลขออกมาเรียงต่อกัน โดยไล่ตรวจทีละตัวอักษร
=SUMPRODUCT(MID(0&A2, LARGE(INDEX(ISNUMBER(--MID(A2,ROW($1:$99),1))*ROW($1:$99),0), ROW($1:$99))+1, 1)*10^ROW($1:$99)/10)| A | B | |
|---|---|---|
| 1 | ข้อความ | ตัวเลขที่ดึงได้ |
| 2 | รหัส INV1024 | 1024 |
สูตรนี้ยาวและเข้าใจยาก แต่ไม่ต้องพึ่งเวอร์ชันใหม่ หลักการคือหาตำแหน่งตัวอักษรที่เป็นเลข แล้วประกอบกลับเป็นจำนวน ใช้ได้เมื่อในเซลล์มีกลุ่มตัวเลขกลุ่มเดียว
เคสที่พบบ่อย
| ต้องการ | สูตร (Excel ใหม่) |
| ตัวเลขกลุ่มแรก | =REGEXEXTRACT(A2,"\d+") |
| ตัวเลขทุกกลุ่ม (แยกหลายเซลล์) | =REGEXEXTRACT(A2,"\d+",1) |
| ทศนิยมด้วย | =REGEXEXTRACT(A2,"\d+\.?\d*") |
| ลบตัวอักษรทิ้ง เหลือแต่เลข | =REGEXREPLACE(A2,"\D","") |
ข้อควรรู้
- ผลลัพธ์ยังเป็นข้อความ — ถ้าจะบวกลบ ต้องแปลงเป็นตัวเลขด้วย
+0หรือ VALUE() และลบจุลภาคออกก่อนถ้ามี - Flash Fill ก็ทำได้ — พิมพ์ผลลัพธ์ตัวอย่าง 2–3 แถว แล้วกด
Ctrl + Eเหมาะกับงานครั้งเดียวที่ไม่ต้องอัปเดต ดู Flash Fill - มีตัวเลขหลายกลุ่มในเซลล์ — ต้องระบุให้ชัดว่าจะเอากลุ่มไหน วิธี array แบบที่ 3 จะรวมทุกหลักติดกันจนได้ผลผิด
- ข้อมูลเยอะและรูปแบบหลากหลาย — Power Query มีเครื่องมือ “Extract → Digits from Text” จัดการทีเดียวทั้งคอลัมน์