เปิด CSV ใน Excel แล้วข้อมูลอยู่คอลัมน์เดียว? สาเหตุและวิธีแก้
เมื่อเปิด CSV แล้วทุกอย่างไปอัดกันอยู่ในคอลัมน์ A แปลว่าไฟล์ใช้ตัวคั่นคนละแบบกับที่ Excel คาดไว้ ส่วนใหญ่คือไฟล์คั่นด้วยจุลภาค (,) ที่ถูกเปิดบนเครื่องที่ตั้งค่าให้ใช้อัฒภาค (;) หรือกลับกัน ข้อมูลไม่ได้เสียหายอะไร ให้เปิดด้วยเครื่องมือที่ตรวจจับตัวคั่นได้เอง เช่น โปรแกรมดู CSV หรือบอก Excel ว่าจะใช้ตัวคั่นไหนผ่านฟีเจอร์นำเข้าข้อมูลหรือ Text to Columns
จุลภาค อัฒภาค และทศนิยมแบบจุลภาค
“CSV” ย่อมาจาก comma-separated values หรือค่าที่คั่นด้วยจุลภาค แต่ในทางปฏิบัติ ตัวคั่นจะเป็นอะไรก็ได้ที่โปรแกรมซึ่งเขียนไฟล์เลือกใช้ นี่คือแถวเดียวกันที่เขียนได้สองแบบ
วันที่,ลูกค้า,จำนวนเงิน
2024-03-15,Müller GmbH,1250.50
วันที่;ลูกค้า;จำนวนเงิน
2024-03-15;Müller GmbH;1250,50
เหตุผลของแบบที่สองคือตัวคั่นทศนิยม ในยุโรปส่วนใหญ่ เช่น เยอรมนี ฝรั่งเศส อิตาลี สเปน เนเธอร์แลนด์ โปแลนด์ ยูเครน และอีกหลายประเทศ ตัวเลขเขียนด้วยจุลภาคเป็นทศนิยม เช่น 1250,50 ถ้าจุลภาคใช้คั่นคอลัมน์ด้วย 1250,50 ก็จะถูกแบ่งเป็นสองเซลล์ โปรแกรมสเปรดชีตในภูมิภาคเหล่านั้นจึงใช้อัฒภาคเป็นตัวคั่นคอลัมน์แทน ส่วนประเทศไทยใช้จุดเป็นทศนิยมเหมือนสหรัฐฯ เครื่องที่ตั้งค่าภูมิภาคเป็นไทยจึงมักใช้จุลภาค
ไม่มีแบบไหนผิด เป็นแค่ธรรมเนียมสองแบบ ปัญหาเริ่มเมื่อไฟล์ที่เขียนด้วยแบบหนึ่งถูกเปิดด้วยโปรแกรมที่คาดหวังอีกแบบ ถ้าอยากรู้จักรูปแบบไฟล์นี้มากขึ้น อ่านไฟล์ CSV คืออะไร
ทำไม Excel ใส่ทุกอย่างไว้ในคอลัมน์ A
เมื่อคุณดับเบิลคลิกไฟล์ .csv Excel จะไม่ดูเนื้อหาไฟล์เพื่อหาว่าใช้ตัวคั่นอะไร แต่จะใช้ ตัวคั่นรายการ (list separator) จากการตั้งค่าภูมิภาคของระบบปฏิบัติการ บน Windows ค่านี้จะเป็นไปตามภูมิภาคของคุณ เครื่องที่ตั้งเป็นประเทศที่ใช้จุลภาคเป็นทศนิยมมักมีตัวคั่นรายการเป็นอัฒภาค ส่วนเครื่องที่ตั้งเป็นสหรัฐฯ สหราชอาณาจักร หรือไทย จะเป็นจุลภาค
ปัญหาจึงเกิดได้ทั้งสองทาง
- ซัพพลายเออร์ในเยอรมนีส่งไฟล์ที่คั่นด้วยอัฒภาคมา แต่ Excel ของคุณที่ตั้งค่าภูมิภาคเป็นไทยคาดหวังจุลภาค คุณจึงเห็น
วันที่;ลูกค้า;จำนวนเงินอยู่ในเซลล์เดียว - ถ้าเครื่องของคุณตั้งค่าภูมิภาคเป็นประเทศในยุโรป เช่น เยอรมนีหรือฝรั่งเศส แล้วได้ไฟล์ที่คั่นด้วยจุลภาคจากสหรัฐฯ Excel จะคาดหวังอัฒภาค และปล่อยแต่ละบรรทัดไว้ทั้งบรรทัดในคอลัมน์ A
ไฟล์ที่ส่งออกจากบริการออนไลน์ ร้านค้าออนไลน์ และ CRM ก็เช่นกัน หลายเจ้าเขียนด้วยจุลภาคเสมอไม่ว่าคุณอยู่ที่ไหน ผู้ใช้ในยุโรปจึงเจอปัญหานี้บ่อยมาก ส่วนผู้ใช้ในไทยมักเจอกับไฟล์จากระบบหรือคู่ค้าในยุโรป ปัญหาที่ใกล้เคียงกันคือตัวอักษรกลายเป็นสัญลักษณ์อย่าง é ซึ่งเป็นเรื่องของการเข้ารหัส ไม่ใช่ตัวคั่น ดูไฟล์ CSV เป็นภาษาต่างดาว
วิธีที่ 1: เปิดด้วยโปรแกรมที่ตรวจจับตัวคั่นอัตโนมัติ
ถ้าคุณแค่ต้องการอ่านไฟล์ เช่น ตรวจคำสั่งซื้อ หาข้อมูลลูกค้า หรือดูว่าไฟล์ที่ส่งออกมามีอะไรบ้าง ทางที่เร็วที่สุดคือใช้โปรแกรมดูไฟล์ที่หาตัวคั่นเองได้
โปรแกรมดู CSV ของ Opener จะดูเนื้อหาไฟล์และตรวจว่าคั่นด้วยจุลภาค อัฒภาค แท็บ หรือเส้นตั้ง (|) แล้วแสดงเป็นตารางที่ถูกต้อง นอกจากนี้ยังตรวจจับการเข้ารหัสข้อความ (UTF-8, Windows-1251 หรือ Windows-1252) และจัดการค่าที่อยู่ในเครื่องหมายคำพูดซึ่งมีตัวคั่นอยู่ข้างใน เช่น "สมชาย, ใจดี" ได้ ไม่ต้องตั้งค่าอะไร ไม่ต้องมีบัญชี และไฟล์อยู่ในเบราว์เซอร์ของคุณ ไม่ถูกอัปโหลดไปไหน คุณค้นหา เรียงลำดับ และส่งออกผลลัพธ์เป็น CSV หรือ JSON ได้
วิธีที่ 2: ใช้การนำเข้าหรือ Text to Columns ของ Excel
ถ้าจะทำงานกับข้อมูลใน Excel ให้บอก Excel ว่าจะใช้ตัวคั่นไหน แทนที่จะดับเบิลคลิกไฟล์
นำเข้าจาก Text/CSV เปิดเวิร์กบุ๊กเปล่า ไปที่แท็บ Data แล้วเลือก “From Text/CSV” Excel จะแสดงตัวอย่างพร้อมรายการ Delimiter ให้เลือก Comma หรือ Semicolon จนคอลัมน์ดูถูกต้อง แล้วโหลดข้อมูล หน้าตัวอย่างเดียวกันนี้ยังให้ตั้งค่าการเข้ารหัสของไฟล์ได้ ถ้าตัวอักษรดูเพี้ยน
Text to Columns ถ้าข้อมูลไปอยู่ในคอลัมน์ A แล้ว
- เลือกคอลัมน์ A
- ที่แท็บ Data เลือก Text to Columns
- เลือก Delimited แล้วติ๊กตัวคั่นที่ไฟล์ของคุณใช้ (เช่น Semicolon หรือ Comma)
- ทำตามตัวช่วยจนเสร็จ
สิ่งที่ต้องระวังในทั้งสองวิธีคือรูปแบบตัวเลข ไฟล์ที่มี 1250.50 เมื่อเปิดบนระบบที่ใช้จุลภาคเป็นทศนิยม อาจอ่านจำนวนเงินเป็นข้อความหรือเป็นตัวเลขที่ผิด หน้าตัวอย่างการนำเข้าและขั้นสุดท้ายของตัวช่วย Text to Columns ให้คุณกำหนดได้ว่าแต่ละคอลัมน์จะถูกตีความอย่างไร ตรวจจำนวนเงินสักสองสามแถวก่อนจะเชื่อยอดรวม
วิธีที่ 3: เพิ่มบรรทัด “sep=” สำหรับ Excel
มีเคล็ดลับเฉพาะของ Excel คือเพิ่มบรรทัดที่บอกชื่อตัวคั่นไว้บนสุดของไฟล์
sep=;
วันที่;ลูกค้า;จำนวนเงิน
2024-03-15;Müller GmbH;1250,50
เปิดไฟล์ในโปรแกรมแก้ไขข้อความธรรมดา เพิ่ม sep=; (หรือ sep=, สำหรับไฟล์ที่คั่นด้วยจุลภาค) เป็นบรรทัดแรก บันทึก แล้วดับเบิลคลิกเปิดอีกครั้ง Excel จะอ่านคำใบ้นี้ ใช้ตัวคั่นตามนั้น และไม่แสดงบรรทัดนี้ออกมา
นี่เป็นวิธีแก้ขัด ไม่ใช่มาตรฐาน โปรแกรมอื่นอย่าง Google Sheets, LibreOffice ฐานข้อมูล หรือสคริปต์ ไม่รู้จัก sep= และมักแสดงเป็นแถวแรกเกินมาหรือถือว่าเป็นหัวตาราง ใช้วิธีนี้กับไฟล์ที่ส่งให้ผู้ใช้ Excel เท่านั้น
วิธีที่ 4: Google Sheets, LibreOffice หรือการตั้งค่าภูมิภาค
Google Sheets ใช้เมนู File → Import แล้วอัปโหลด CSV หน้าต่างนำเข้ามีตัวเลือกประเภทตัวคั่น ให้ปล่อยตรวจจับอัตโนมัติไว้ หรือเลือกตัวคั่นเองก็ได้ รวมถึงอักขระที่กำหนดเอง
LibreOffice Calc เมื่อเปิด CSV, LibreOffice จะแสดงหน้าต่างนำเข้าข้อความที่มีช่องติ๊กสำหรับจุลภาค อัฒภาค แท็บ และตัวคั่นอื่น ๆ พร้อมตัวอย่างแบบสด ใช้ได้ฟรีบน Windows, macOS และ Linux
เปลี่ยนตัวคั่นรายการของ Windows ในการตั้งค่าภูมิภาคของ Control Panel แบบเดิม ส่วนการตั้งค่าเพิ่มเติมจะมีช่อง List separator ถ้าตั้งเป็นจุลภาค Excel จะเปิดไฟล์ที่คั่นด้วยจุลภาคได้ทันทีเมื่อดับเบิลคลิก แต่ใช้อย่างระวัง เพราะเป็นการตั้งค่าทั้งระบบ จึงเปลี่ยนวิธีที่ Excel คั่นอาร์กิวเมนต์ของฟังก์ชันในสูตร และวิธีที่โปรแกรมอื่นอ่านและเขียนไฟล์ CSV ด้วย ถ้าคุณแชร์ไฟล์กับเพื่อนร่วมงานในประเทศเดียวกัน พวกเขาจะเริ่มได้รับไฟล์ที่ใช้ตัวคั่นต่างไปจากเดิม สำหรับคนส่วนใหญ่ วิธีนำเข้าข้างต้นปลอดภัยกว่า
คำถามที่พบบ่อย
ทำไม CSV ไฟล์เดียวกันเปิดบนเครื่องเพื่อนร่วมงานได้ปกติ?
เพราะการตั้งค่าภูมิภาคของเครื่องเขาใช้ตัวคั่นรายการต่างจากของคุณ Excel ใช้ค่านี้เมื่อดับเบิลคลิก CSV ไฟล์เดียวกันจึงเปิดได้ถูกต้องบนเครื่องหนึ่ง แต่ไปกองอยู่คอลัมน์เดียวบนอีกเครื่อง
ควรบันทึกไฟล์ CSV ด้วยจุลภาคหรืออัฒภาค?
ขึ้นอยู่กับว่าใครจะเปิด สำหรับโปรแกรมอื่น สคริปต์ และเพื่อนร่วมงานต่างประเทศ จุลภาคเป็นค่าเริ่มต้นที่ใช้กันทั่วไป สำหรับผู้ใช้ Excel ในประเทศที่ใช้จุลภาคเป็นทศนิยม อัฒภาคจะเปิดได้ทันที ถ้าทำได้ ให้ถามผู้รับ
ทำไมบางแถวยังมีจำนวนคอลัมน์ไม่ถูกต้อง?
ส่วนใหญ่เพราะค่าบางค่ามีตัวคั่นอยู่ข้างใน เช่น ชื่อบริษัทที่มีจุลภาคแต่ไม่ได้ครอบด้วยเครื่องหมายคำพูด โปรแกรมดูไฟล์และตัวนำเข้าที่ทำตามกฎเครื่องหมายคำพูดของ CSV จัดการค่าที่ครอบไว้ได้ ส่วนค่าที่ไม่ได้ครอบต้องแก้ที่ต้นทาง
โปรแกรมดู CSV ใช้กับไฟล์ที่คั่นด้วยแท็บหรือเส้นตั้งได้ไหม?
ได้ โปรแกรมดู CSV ตรวจจับจุลภาค อัฒภาค แท็บ และเส้นตั้งได้อัตโนมัติ และเปิดไฟล์ .csv, .tsv และ .txt ได้