เปลี่ยนเลขอารบิกเป็นไทย ใน Excel

เปลี่ยนเลขอารบิกเป็นเลขไทย ใน Excel หรือในทางกลับกัน เปลี่ยนเลขไทยเป็นอารบิก ปัญหาชวนปวดหัวสำหรับเราชาวไทยที่ต้องทำงานทั้งภาษาไทย ตัวเลขไทย โดยเฉพาะบรรดาท่านที่รับราชการจะโดนบังคับว่าต้องใช้ตัวเลขไทยนะจ๊ะ

ถึงแม้จะยืนยันว่า เวลาทำอะไรที่เกี่ยวกับซอฟต์แวร์ พวกการคำนวณ หรือว่าการทำฐานข้อมูลนี่ ไม่ควรนิยมไทย เป็นไปได้ใช้ภาษาอังกฤษหรือว่าตัวเลขอารบิกไปเลยดีกว่า

แต่บางครั้งก็เป็นไฟลต์บังคับที่เราไม่มีสิทธิ์เลือก

(โปรดอ่านเรื่องที่เกี่ยวข้องประกอบ – Sarabun IT๙ มีปัญหาเลิกใช้เถอะ)

ในครั้งนี้จึงจะนำเสนอวิธีการ “เปลี่ยน” หรือ การจัดรูปแบบให้ออกมาเป็นอย่างที่เราต้องการ ซึ่งจะมีทั้งแบบง่าย ๆ แค่เปลี่ยนฟอร์แมตไปจนถึงอาศัยการเขียนโค้ด VBA เข้าช่วย

เขียนโค้ดไม่เป็นก็ไม่เป็นไร แค่ copy แล้วก็ paste เท่านั้นก็พอ

ประเด็นสำคัญที่ต้องพิจารณาก่อนก็คือ ในเซลล์นั้น เก็บค่าเป็นตัวเลขจริง ๆ หรือเก็บค่าเป็นข้อความ?

ตัวเลขหรือข้อความ

ก่อนจะแก้ปัญหา ต้องรู้ก่อนว่า สิ่งที่อยู่ในเซลล์นั้นเป็น ข้อความ หรือ ตัวเลข text หรือ digit ก่อนจะไปถึงเรื่องวิธีเปลี่ยนเลขอารบิกเป็นเลขไทย มาดูก่อนว่า ปัญหาที่พบและต้องแก้ มีอะไรบ้าง ต้องดูว่า Cell ที่จะแก้ไขนั้น เก็บเฉพาะค่าตัวเลข (Number) อย่างเดียวหรือเปล่า หรือว่าเป็นข้อความ (Text) ผสม

ถ้าเป็นตัวเลขทั้งหมด มันก็ง่ายแล้ว

กรณีในเซลล์เป็นตัวเลข ใช้การจัดรูปแบบ

ถ้าในเซลล์ที่ต้องการ เป็นตัวเลขทั้งหมด การเปลี่ยนก็ไม่ยุ่งยาก เพียงแค่เปลี่ยนรูปแบบการแสดงผลเท่านั้นก็พอ

แนะนำให้อ่านเพิ่มเติมเรื่อง Format Cells กับ Custom Number Format

สิ่งที่เราจะทำ จะเป็นการปรับรูปแบบการแสดงของตัวเลข โดยที่ไม่ได้ไปยุ่งเกี่ยวแก้ไขข้อมูลอะไรทั้งสิ้น คือเราพิมพ์เลขอารบิกเหมือนเดิม แต่กำหนดให้แสดงค่าเป็นเลขไทย วิธีนี้เรายังเอาไปคำนวณทุกอย่างได้เป็นปกติ

วิธีการง่าย ๆ

  1. คลิกขวาในเซลล์ที่ต้องการ
  2. เลือก Format Cells
  3. ไปที่แท็บ Number
  4. เลือก Custom

จะเห็นว่าตรง Custom มีแบบแผนให้เลือกมากมายพอสมควร แล้วเราจะต้องปรับแต่งมันอย่างไร? แนะนำให้อ่านเรื่อง Custom Number Formats ที่ได้อธิบายเอาไว้แล้วพอสมควร

มันจะมีปัญหานิดนึง (ซึ่งไม่ควรเป็นปัญหา) คือท่านได้ตั้งค่า locale ของ Windows ให้เป็นไทยหรือไม่? ซึ่ง DefExcel คิดว่าตั้งไว้แล้วเรียบร้อย เพราะเกือบทั้งหมด ถ้าเป็น Windows ในไทยมักจะตั้งค่านี้เอาไว้

ถ้าหาก locale เป็นไทยอยู่แล้ว และ/หรือได้ลง Excel เวอร์ชัน ภาษาไทย ไว้ ตรงนี้ท่านจะได้เห็นโค้ดขึ้นต้นด้วยตัว t ทำเป็นรูปแบบให้ท่านเลือก และสามารถดัดแปลงได้ ตรงนี้คือการกำหนดเลขไทย

แต่ หากท่านไม่ได้ตั้งค่า Locale เป็นไทยเอาไว้ หรือใช้ excel ที่ไม่ใช่เวอร์ชันไทย ตรงนี้จะไม่เห็นตัว t ขึ้นมาในตัวเลือกของ Custom โดยอัตโนมัติ ซึ่งเราจะกำหนดรูปแบบการแสดงผลเป็นเลขไทยง่าย ๆ โดยพิมพ์ t นำหน้ารูปแบบตัวเลขที่ต้องการ เช่น

t#,##0_);(t#,##0)

แต่บางทีสูตรเลขไทยนี้ใช้ไม่ได้ โดยส่วนตัวเดาว่า น่าจะเป็นการตั้งค่า Region ของ Windows หรือ mac OS (ระบบปฏิบัติการ) ไม่มีภาษาไทย

เปลี่ยนเลขอารบิกเป็นเลขไทย
ถ้าไม่ได้ตั้งค่า Region เป็นไทย หรือด้วยเหตุผลอื่น ๆ อาจจะไม่สามารถใช้วิธีกำหนดรูปแบบด้วยการ t

แต่มีบางคนบอกมาว่าอาจจะเป็นเพราะเวอร์ชัน Excel ก็ได้

โดยส่วนตัว ถ้าหากว่าไม่สามารถใช้วิธีกำหนดรูปแบบด้วยตัว t เวลาแก้ไขรูปแบบใน Format นี้จะใช้ [$-D07041E] นำหน้า แล้วค่อยตามด้วยสัญลักษณ์ต่าง ๆ ที่เขียนถึงข้างต้น อันนี้เป็นตัวกำหนด locale ใน format ของ Excel ซึ่งนำไปดัดแปลงใช้งานได้

โดย [$-D07041E] เป็นตัวกำหนด International Format คือ การ ที่เราเรียกใช้ตัวเลขไทย (D) และใช้รูปแบบปฏิทินทางพุทธ (07 – ตรงนี้อย่าลืมว่า Excel เก็บวันที่ในรูปแบบตัวเลข) และ กำหนดรหัส LCID สำหรับภาษาไทย คือ 041E  (อ่านรายละเอียดที่เว็บไมโครซอฟต์ก็แล้วกันเนาะ Windows Language Code Identifier (LCID) Reference)

ตัวอย่างแบบมีตัวคั่นหลักพัน เป็นจำนวนเต็ม

[$-D07041E]#,###,##0

จากข้างบน โปรดสังเกตว่าจะให้ใส่เครื่องหมายจุลภาคคั่นหลักพันไว้ ถ้าไม่ต้องการก็เอาออกได้ ยังเก็บค่าเป็นตัวเลขอารบิกอยู่ เพียงแต่แสดงผลเป็นเป็นเลขไทยเท่านั้น นำไปคำนวณได้ตามปกติ

เปลี่ยนเลขอารบิกเป็นเลขไทย

ถ้าหากเดิมเป็นเลขไทย จะให้แสดงเป็นเลขอารบิกก็ทำย้อนกลับกันเฉย ๆ นี่แหละ

เปลี่ยนเลขอารบิกเป็นเลขไทย กรณีในเซลล์มีตัวอักษรอยู่ด้วย

ถ้าเป็นตัวเลขที่อยู่ในเซลล์ที่ไม่ได้จัดเก็บเป็นตัวเลขอย่างเดียว อาจจะมีข้อความเติมหน้าหรือต่อท้ายตัวเลข ทำให้เซลล์นั้นกลายเป็นข้อความ

อันนี้นอกเรื่องนะ

เคยแนะนำหลายคนที่ชอบใช้ Excel ในการทำเอกสารแทน Word (ซึ่งมักจะเห็นว่า คนชอบใช้เป็นตาราง) ว่า ถ้ามีตัวเลขซึ่งอาจจะนำไปใช้ต่อ ให้แยกเซลล์กันไว้

อย่างเช่นจะใส่ “เป็นเงิน 100 บาทถ้วน” ก็ควรเอา เป็นเงิน  อยู่เซลล์หนึ่ง เอา 100 ไว้ในอีกเซลล์หนึ่ง และคำว่า บาทถ้วน ก็ไว้อีกเซลล์หนึ่ง เวลาจะคำนวณบวกลบคูณหารจะได้ไม่มีปัญหา (รวมถึงรูปแบบการแสดงผลด้วย)

แนะนำ ว่า ลองใช้ custom format numbers ให้เป็นประโยชน์ เช่น อยากจะให้มีคำว่า “บาท” ต่อท้ายในเซลล์เดียวกันจริง ๆ ลองกำหนดฟอร์แมตแบบนี้

#,##0.00 “บาท”

ตัวอย่างเช่น ถ้าใส่ตัวเลข “12345.67” จะแสดงผลเป็น “12,345.67 บาท” โดยที่ค่าที่เก็บไว้ยังเป็นตัวเลขที่เอาไปคำนวณต่อได้อยู่

กลับมาว่ากันต่อ ถ้าหากว่าเป็นข้อความ หรือเป็น text ก็คงต้องใช้ มาโคร วิธีการแนวคิดแบบเดียวกับ Word (อ่านเรื่อง แปลงตัวเลขอารบิกเป็นไทย ไทยเป็นอารบิกได้ที่บล็อกนี้จ้า)

โดยใน Excel เรียกใช้จาก

  • View > Macros
  • ใส่ชื่ออะไรก็ได้ในช่อง macro name
  • คลิก Create เพื่อเข้าสู่วิชวลเบสิก

(หรืออ่านบล็อกนี้ประกอบ เปิด Visual Basic Editor)

ใส่คำสั่งนี้เข้าไป

Sub arabictothai()
For i = 0 To 9
Cells.Replace What:=Chr(48 + i), Replacement:=Chr(240 + i)
Next
End Sub
Sub Thaitoarabic()
For i = 0 To 9
Cells.Replace What:=Chr(240 + i), Replacement:=Chr(48 + i)
Next
End Sub

วิดีโอประกอบ

หวังว่าที่เขียนมาจะช่วยท่านผู้อ่านเปลี่ยนเลขอารบิกเป็นไทย และทำงานได้อย่างราบรื่นนะจ๊ะ

สำหรับการเปลี่ยนเลขอารบิกเป็นเลขไทยในไมโครซอฟต์เวิร์ด อ่านได้ที่นี่