ข้อมูลที่ปนตัวเลขกับตัวอักษร เช่น “ราคา 1,250 บาท” หรือ “สินค้า A-4 จำนวน 30 ชิ้น” เอาไปคำนวณตรงๆ ไม่ได้ ต้องดึงเฉพาะตัวเลขออกมาก่อน บทความนี้รวม 3 วิธี ตั้งแต่วิธีใหม่ที่สั้นที่สุดใน Microsoft 365 จนถึงวิธีที่ใช้ได้ทุกเวอร์ชัน
วิธีที่ 1: REGEXEXTRACT (Excel เวอร์ชันใหม่) — สั้นที่สุด
=REGEXEXTRACT(A2, "[0-9,]+")| A | B | |
|---|---|---|
| 1 | ข้อความ | ตัวเลข |
| 2 | ราคา 1,250 บาท | 1,250 |
| 3 | ค่าส่ง 60บาท | 60 |
รูปแบบ [0-9,]+ หมายถึง “ตัวเลขหรือจุลภาค ติดกันตั้งแต่ 1 ตัวขึ้นไป” ถ้าอยากคำนวณต่อ ให้ครอบด้วย SUBSTITUTE(...,",","")+0 เพื่อลบจุลภาคแล้วแปลงเป็นตัวเลข ดู ฟังก์ชัน REGEX
วิธีที่ 2: TEXTSPLIT แยกด้วยตัวคั่นหลายแบบ
ใช้ได้ดีเมื่อตัวเลขคั่นด้วยช่องว่างหรือสัญลักษณ์ที่แน่นอน
=TEXTSPLIT(A2, " ", , TRUE)| A | B | C | D | |
|---|---|---|---|---|
| 1 | ข้อความ | ผลแยก | ||
| 2 | สินค้า A-4 จำนวน 30 ชิ้น | สินค้า | A-4 | 30 … |
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” จัดการทีเดียวทั้งคอลัมน์