เหตุใดการแบ่งบรรทัด Excel จึงไม่โอนไปยัง Notepad


31

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


2
สวัสดียินดีต้อนรับสู่ superuser! พยายามให้รายละเอียดมากที่สุดเท่าที่จะเป็นไปได้เพื่อที่คุณจะได้รับคำตอบที่ละเอียดยิ่งขึ้นสำหรับคำถามของคุณ ตรงไปถามหน้าคำถามของคุณเองสำหรับเคล็ดลับที่มีประโยชน์เพื่อช่วยให้คุณถามคำถามที่ดีที่สุด ฉันทดสอบสิ่งนี้ด้วย Excel 2013 และ Notepad ++ และใช้งานได้ดี แต่ฉันสามารถทำซ้ำปัญหาที่คุณอธิบายด้วยแอปพลิเคชั่น Notepad ทั่วไปที่มาพร้อมกับ Windows OS และไม่สามารถใช้งานได้
angelofdev

โปรดทราบว่าคลิปบอร์ดสามารถสนับสนุนตัวอย่างขนาดเล็กหลาย ๆ รสชาติ (ข้อความดิบถึงเมตาดาต้าจำนวนมากเกี่ยวกับที่มาของมัน) ขึ้นอยู่กับโปรแกรมที่ได้รับเพื่อพิจารณาว่าโปรแกรมใดที่ดีที่สุด แผ่นจดบันทึกไม่ได้ฉลาดมาก
Thorbjørn Ravn Andersen

คำตอบ:


27

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


6
คำตอบนี้ผิด ลองบันทึกแผ่นจดบันทึกของคุณหลังจากวางข้อความด้วยตัวแบ่งบรรทัด จากนั้นเปิดไฟล์ด้วย wordpad แทน เพียงข้อผิดพลาดในรุ่นเก่าของ Notepad คุณควรทำเครื่องหมายคำตอบอื่น ๆว่าถูกต้อง
Zak

@ แซ่คคุณไม่ถูกต้อง นี่คือวิธีการวางจาก Excel ในการแก้ไขข้อความง่ายๆ บทความที่คุณลิงก์ไม่มีส่วนเกี่ยวข้องกับบั๊ก แต่เป็นเรื่องเกี่ยวกับ Notepad ที่เพิ่มการรองรับ Unix carriage return และ line feeds
Keltari

4
@Keltari ไม่จริง @Zak ถูกต้อง ด้วยเหตุผลบางอย่างเมื่อคุณเพิ่มตัวแบ่งบรรทัดใน Excel (ใช้Alt+Enter) เพียง 0xA ถูกป้อนไม่เต็ม 0xD 0xA ซึ่งหมายความว่าแทนLF CR/LFExcel ตีความนี้และแสดงเส้นแบ่งในขณะที่ Notepad CR/LFธรรมดาไม่ได้เพราะคาดว่า มันมีความแตกต่างในรูปแบบที่ตรวจพบมากกว่าข้อบกพร่อง แต่ก็เป็นเหตุผลที่ถูกต้อง
ChatterOne

4
@Keltari ไม่มีอะไรจะเถียง ใช้ตัวแก้ไขไบนารีและดูสิ่งที่เขียนในไฟล์
ChatterOne

1
@Keltari สุจริตเหล่านี้ upvotes ส่วนใหญ่เป็นผลมาจากการเป็นคำตอบที่ได้รับการยอมรับใน HNQ คุณสามารถเห็นได้ว่ามีกี่คนที่เห็นด้วยกับคำตอบอื่น ๆ
kapex

45

สิ่งนี้เป็นจริงเมื่อคุณใช้ Notepad ซึ่งเป็นตัวแก้ไขข้อความพื้นฐานของ Microsoft ที่ติดตั้งไว้แล้วใน Windows

อย่างไรก็ตามคุณสามารถใช้โปรแกรมแก้ไขข้อความขั้นสูงเช่น PSPad หรือ Notepad ++ (ทั้งดีและฟรี) และคุณจะได้รับการแบ่งบรรทัดของคุณ

Excel :

สันทัด

ทำเครื่องหมายเซลล์แล้วคัดลอกวางลงในNotepad ++ :

Notepad ++

เนื้อหาเดียวกันวางลงในNotepad (ตัวแก้ไขค่าเริ่มต้นของ Windows):

WindowsNotpad

โปรดทราบว่าในทั้งสองกรณีเครื่องหมายคำพูดจะถูกเพิ่มโดยอัตโนมัติ!

บรรณาธิการที่ดีกว่าจะให้ตัวเลือกในการแสดงอักขระควบคุมเช่น LineFeed (LF) และ CarriageReturn (CR) ใน Notepad ++ ดูเหมือนว่า:

Notepad ++ withcontrochars

โดยสรุป: เลือกเครื่องมือของคุณขึ้นอยู่กับความต้องการของคุณ หากคุณต้องการขอบเขตของเซลล์ที่เก็บรักษาไว้ในเครื่องมือแก้ไข แต่เนื้อหาของเซลล์อาจเปลี่ยนแปลงเล็กน้อยให้ใช้ Notepad หากคุณต้องการเนื้อหาของเซลล์ที่ไม่มีการแตะต้องรวมถึงการขึ้นบรรทัดใหม่และการทำซ้ำขอบเขตเซลล์ 1: 1 ไม่สำคัญให้ใช้เครื่องมือแก้ไขอื่น

การประมวลผลข้อมูลจำนวนมาก

หากคุณต้องการทั้งเส้นขอบของเซลล์และเนื้อหาของเซลล์ที่เก็บรักษาไว้ 1: 1 ในเวลาเดียวกันคุณอาจพบปัญหา

อาจมีวิธีแก้ปัญหาที่ชาญฉลาดกว่า แต่สิ่งที่ฉันทำในกรณีเช่นนี้คือการเขียนโปรแกรมเล็ก ๆ ในภาษาใดก็ได้ (VBA, Python หรืออะไรก็ตามที่คุณชอบมากที่สุด) ที่อ่านเนื้อหาและเพิ่มสตริงตัวยึดสำหรับการแบ่งบรรทัด "### Linebreak ###" ซึ่งในภายหลังสามารถถูกแทนที่ด้วยอักขระควบคุม CR และ LF อีกครั้งแน่นอนว่านี่เป็นการทำงานที่เล่นแร่แปรธาตุแล้วและเหมาะสมถ้าคุณต้องประมวลผลข้อมูลจำนวนมาก

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


12
Notepad ++ แสดงCRLFว่ามีจริงเพราะมันเห็นLFและถือว่ามันควรจะเป็นแบบเต็มCRLFและแปลงมัน
3D1T0R

@ 3D1T0R ฉันสงสัยว่าเป็นเพราะ carriage return ที่ไม่มีการป้อนบรรทัดจะประสบกับความสามารถในการอ่าน มันจะเป็นพื้นที่ที่น่ายินดีที่มีประสิทธิภาพ
Stian Yttervik

4
@ 3D1T0R: ขึ้นอยู่กับการตั้งค่าการสิ้นสุดบรรทัด Notepad ++ เป็นไปได้ที่จะ "วางไบนารี" เพื่อคงรูปแบบ Excel ดั้งเดิมซึ่งแน่นอนว่าเป็น LF เท่านั้น
โทมัสเวลเลอร์

1
นี่ควรเป็นคำตอบที่ได้รับการยอมรับ
ChatterOne

1
โปรดทราบว่า Notepad ภายใต้ Windows 10 เวอร์ชัน 1809 มีตัวเลือกให้ใช้ LF เป็น linebreak (แทน CR-LF) หากคุณใช้สิ่งนั้นจะไม่มีการแปลง แต่การกระจายบรรทัดยังคงแสดงอย่างถูกต้อง
เอริค

34

คำตอบของKeltariให้เหตุผลเชิงตรรกะในขณะที่คำตอบนี้มุ่งเน้นไปที่ความแตกต่างทางเทคนิค

มีการแบ่งบรรทัดในสามรูปแบบที่แตกต่างกันในการใช้งานในการคำนวณ:

  • การสิ้นสุดบรรทัด Unix และ macOS 10.0+ ใช้อักขระป้อนบรรทัด ( LF)
  • การสิ้นสุดบรรทัดสำหรับ Macintosh (ก่อน macOS 10.0) ใช้อักขระปัดแคร่ ( CR)
  • การสิ้นสุดบรรทัด Windows ใช้การรวมกันของอักขระปัดแคร่และการป้อนบรรทัด ( CRLF)

นี่คือการระงับจากวิธีการทำงานของนักเขียนประเภท

Excel ใช้การรวมตัวแบ่งบรรทัดเหล่านี้เพื่อแสดงเซลล์ที่มีหลายบรรทัด:

  • เซลล์จะถูกคั่นด้วยTabอักขระ
  • แถวถูกคั่นด้วยCRLFอักขระ
  • เซลล์ Multiline แยกแต่ละบรรทัดโดยใช้เพียงLFตัวละคร

สิ่งนี้จะปรากฏขึ้นเมื่อคุณบันทึกเวิร์กบุ๊กเป็น.txtไฟล์และเปิดด้วยโปรแกรมแก้ไขข้อความที่รองรับการแสดงตัวอักษรเหล่านี้

สันทัด

Notepad ++

Notepad จะประมวลผลCRLFเป็นบรรทัดใหม่และไม่สนใจLFหรือCRด้วยตนเองเท่านั้น พวกเขายังอยู่ในเอกสาร แต่ไม่สามารถมองเห็นได้ในทางใดทางหนึ่ง

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


3
คุณควรพูดถึงว่ายังLF มีอยู่จริงเมื่อวางในแผ่นจดบันทึกแผ่นจดบันทึกจะไม่แสดงอย่างเห็นได้ชัด (มันแสดงผลได้อย่างมีประสิทธิภาพเหมือนกับพื้นที่ว่างที่มีความกว้างเป็นศูนย์) ดังนั้นทำไมการคัดลอกข้อมูลที่วางกลับออกจาก notepad ลงใน Excel จะมีตัวแบ่งบรรทัดเหล่านี้ (แม้ว่า Excel จะไม่ปรับขนาดแถวให้โดยอัตโนมัติ)
3D1T0R

3
โปรดทราบว่านี่เป็นเพียงวิธีที่ Excel ส่งออกเวิร์กบุ๊กไปยังไฟล์ข้อความ สำหรับไฟล์ xlsx CRLFแบ่งสายภายในสตริงจะแสดงจริงโดย
kapex

3
ที่น่าสนใจก็เป็นไปได้ทั้งหมดในการสร้างมือถือที่ "มัน" มี CRLF ที่ ="A"&CHAR(13)&CHAR(10)&"B"- ตัวแบ่งบรรทัดที่ผลิตโดยสูตรไม่สามารถมองเห็นได้ใน excel แต่ทำงานได้ดีถ้าคัดลอกแล้ววางผ่าน "วางค่า" ค่าที่วางจากการพิมพ์ด้วยตนเอง"A<CRLF>B"ในแผ่นจดบันทึกและการคัดลอกจะยังคงอยู่ใน CRLF
Random832

3
@ 3D1T0R ถูกต้อง ลองคัดลอกเซลล์ Excel เดียวที่มีข้อความ "a \ nb" (โดยที่ "\ n" หมายถึงการขึ้นบรรทัดใหม่) ลงใน Notepad คุณจะเห็น "ab" ใน Notepad (พร้อมเครื่องหมายคำพูด) แต่ถ้าคุณวางเครื่องหมายรูปหมวกหน้า "a" และกดปุ่มลูกศรขวาบนแป้นพิมพ์ของคุณสามครั้งคุณจะพบว่ามีอักขระที่มีความกว้างเป็นศูนย์ที่มองไม่เห็นระหว่าง "a" และ "b"! แน่นอนคุณสามารถใช้ปุ่ม Shift เพื่อเลือกและคัดลอกไปยังคลิปบอร์ด!
Andreas Rejbrand

2
@AndreasRejbrand: ฉันได้ใช้เทคนิคนี้หลายครั้งเพื่อทำให้ไฟล์ข้อความที่มีLFEOL อ่านได้อย่างรวดเร็ว คือหาLFตัวเลือกCtrl+ C, Ctrl+ Home, Ctrl+ F, Ctrl+ V, Enter, ,Esc Enterจากนั้นซ้ำ ๆF3, Enterจนจบ [แก้ไข: <kbd> ไม่ทำงานในความคิดเห็นใช่ไหม]
3D1T0R

1

Excel ใช้ LF เพื่อแสดงบรรทัดใหม่ภายในเซลล์ Notepad ไม่ถือว่านี่เป็นบรรทัดใหม่เนื่องจาก Windows โดยทั่วไปใช้ CRLF สำหรับบรรทัดใหม่

Notepad ++ ฉลาดกว่า Notepad ที่ค่อนข้างง่ายและตีความ LF เป็นบรรทัดใหม่เช่นกัน


ฉันไม่ได้ใช้ Notepad ++ แต่เกิดจากความอยากรู้: จะเกิดอะไรขึ้นถ้าคุณมีตาราง Excel ที่ประกอบด้วยแถวอย่างน้อยสองแถวที่มีเซลล์หลายบรรทัดและคัดลอกวางลงในแผ่นจดบันทึก ++
Andreas Rejbrand

1
@AndreasRejbrand เซลล์หลายเซลล์จะถูกรวมเข้าด้วยกัน"และ Notepad ++ จะทำให้การจบบรรทัดทั้งหมดเป็นปกติ ดูที่นี่ หากคุณบันทึกเป็น.txtและเปิดใน Notepad ++ แทนเซลล์หลายเส้นจะมีLFเท่านั้น ดูที่นี่
Worthwelle
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.