Excel - ป้องกันข้อความเซลล์จากการโอเวอร์โฟลว์ไปยังเซลล์ถัดไป (ว่าง)


71

เมื่อคุณมีข้อความในเซลล์ Excel ที่ยาวเกินกว่าที่จะแสดงในพื้นที่ที่มองเห็นได้ของเซลล์นั้นและเซลล์ถัดไปทางด้านขวาว่างเปล่า Excel ช่วยให้ข้อความแสดงในเซลล์ถัดไป (และถัดไปและ ถัดไปตามต้องการ) ฉันต้องการเปลี่ยนสิ่งนี้ ฉันต้องการหลีกเลี่ยงข้อความล้น

ฉันรู้ว่าฉันสามารถหลีกเลี่ยงสิ่งนี้ได้โดยการเปิดใช้งาน "การตัดคำ" และปรับความสูงของแถว แต่นั่นไม่ใช่สิ่งที่ฉันต้องการ

ฉันต้องการเปลี่ยนพฤติกรรมเริ่มต้นของ Excel ดังนั้นจึงแสดงค่าของแต่ละเซลล์เฉพาะในพื้นที่ที่มองเห็นได้ของเซลล์นั้น ไม่มีล้นไม่มีคำห่อ

เป็นไปได้ไหม (ฉันใช้ Excel 2010 โดยวิธี)


5
ถ้ามันจะกลายเป็นไม่เป็นไปได้คุณสามารถใช้อักขระช่องว่างกับเซลล์ว่าง ...
Aprillion

ค่อนข้างน่าสนใจ - ฉันไม่รู้วิธีอื่นนอกจากใช้ WordWrap, Font-AutoSize หรือตัวละครในเซลล์อื่น
Jook

1
คุณสามารถตัดทอนอักขระพิเศษได้โดยเลือกเซลล์ทั้งหมดไปที่Data / Text to Columnsและระบุตัวแบ่งหลังจากมีอักขระมากเท่าที่จะสามารถบรรจุลงในเซลล์ได้โดยไม่ต้องมีการตัด / ล้น อย่าลืมข้ามคอลัมน์เพิ่มเติมที่สร้างขึ้นที่มีตัวอักษรพิเศษ!
Karan

ฉันเดาว่าสิ่งนี้จะตอบคำถามของคุณ: superuser.com/a/878605/497156
Sulaiman

"ฉันรู้ว่าฉันสามารถหลีกเลี่ยงสิ่งนี้ได้ด้วยการเปิดใช้งาน" การตัดคำ "และปรับความสูงของแถว" ขอบคุณ! นั่นคือโซลูชันที่ฉันเลือก
Ochado

คำตอบ:


4

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

อาจเป็นตัวเลือกที่เหมาะสมกับบางคนทั้งนี้ขึ้นอยู่กับข้อกำหนด


5
ดังนั้นคำตอบของคุณคือบอกว่าวาง Excel และไปกับแผ่นงาน Google
Solar Mike

อย่างที่ฉันพูดไม่ใช่ตัวเลือกสำหรับทุกคน แต่อาจเป็นทางออกที่ดีสำหรับบางคน
yellavon

@SolarMike - ขอบคุณ ฉันสับสน แต่ความคิดเห็นของคุณตอบคำถามนี้ ฉันคิดว่า & yellavon สันนิษฐานว่าผู้คนจะหยุดชะงักคำตอบของเขาและเช่นนี้เป็นการป้องกัน - ก่อนที่จะอธิบายคำตอบจริง ๆ ความคิดเห็นของคุณสั้นกระชับกว่าคำตอบที่โพสต์จริง
barrypicker

อันที่จริงนี่เป็นคำตอบที่ใกล้เคียงกับโซลูชันจริงมากที่สุด ฉัน discoevered ว่าใน Excel คุณสามารถทำสิ่งที่คล้ายกับนี้ ปรับคอลัมน์ให้มีความกว้างที่ต้องการจากนั้นเปิดใช้งานการแปรปรวนของคอลัมน์ (ซึ่งจะทำให้ความสูงของแถวเพิ่มขึ้นทั้งหมด) จากนั้นเลือกแถวทั้งหมดแล้วปรับแถวความสูงตามความสูงที่ต้องการ Voila! ขณะนี้คุณมีข้อความในเซลล์ที่ทำไม่ได้ล้นไปยังเซลล์ที่อยู่ติดกัน (@ yellavon: ฉันจะยอมรับคำตอบของคุณคุณอาจต้องการที่จะปรับปรุงมันจะมีพฤติกรรมเช่นนี้ Excel เพื่อให้ประชาชนสามารถเข้าถึงการแก้ปัญหาได้ง่ายขึ้น).
E-MRE

49

ใช่คุณสามารถเปลี่ยนพฤติกรรมนี้ได้ แต่คุณอาจไม่ต้องการให้เกิดผลข้างเคียงนี้

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

ปัญหาด้วยวิธีนี้คือที่นี้จริงจะเติมเต็มเซลล์โดยการทำซ้ำเนื้อหาของพวกเขาเมื่อมันสั้นพอที่จะใส่ในมือถือหลายครั้ง ดูภาพหน้าจอด้านล่างสำหรับความหมายนี้ (โปรดสังเกตว่าB7จะเต็มไปด้วย 'ข้อความสั้น'.)

สกรีนช็อตแสดงพฤติกรรมการจัดตำแหน่งข้อความที่แตกต่างกันสำหรับค่าเริ่มต้นและการเติม

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

โปรดทราบว่าคุณสามารถเติมเซลล์ที่อยู่ติดกันด้วยอักขระติ๊ก ( ') โดยใช้วิธีแรกของเบเนดิกต์ซึ่งเป็นวิธีที่ฉลาดมาก วิธีนี้คุณไม่จำเป็นต้องซ่อนอะไรป้องกันเซลล์ส่วนเกินและถ้าคุณคัดลอกเซลล์เป็นข้อความ (สมมติว่าเป็น notepad) คุณยังคงได้รับข้อความว่างเปล่าไม่ใช่ช่องว่างหรือเห็บ


2
ดังนั้นฉันจึงแนะนำให้คุณติดตามวิธีการของเบเนดิกต์เพื่อเติม'ตัวละครให้เต็ม ตอนนี้ฉันไม่รู้ว่าฉันควรโหวตคำตอบของคุณหรือของเขาหรืออะไร! :-p
Dan Henderson

ฉันยิ่งสับสนมากขึ้น ฉันไม่เห็นคำแนะนำใด ๆ ที่จะใช้'ในคำตอบของเบเนดิกต์เลยรวมถึงการแก้ไขแบบเก่าด้วย! ฉันได้อัปเดตทั้งคู่ในกรณี ...
user56reinstatemonica8

1
@ user568458: บันทึกของฉันเป็นจริงคำตอบของ Benedikt คุณสามารถเติมเซลล์ด้วย' แทนที่จะเติมพวกเขาด้วยN/Aตามที่ Benedikt แนะนำ ฉันเพิ่งค้นพบวิธีการของ Benedikt ในการเติมเซลล์ว่างทั้งหมดด้วยค่านิยมที่น่าสนใจ
Marcus Mangelsdorf

1
'เติม' จะทำให้ตัวเลขอยู่ในแนวเดียวกันเช่นกัน
posfan12

ช่างโง่เหลือเกิน (Excel ไม่ใช่คำตอบนี้)
TJ Crowder

26

นี่คือวิธีที่ฉันทำ

  1. ตัวเลือกที่ 1:เติมเซลล์ว่างทั้งหมดด้วย "N / A" จากนั้นใช้การจัดรูปแบบตามเงื่อนไขเพื่อทำให้มองไม่เห็นข้อความ
  2. หรือตัวเลือกที่ 2:เติมเซลล์ว่างทั้งหมดด้วย 0 และใช้การตั้งค่า Excel เพื่อซ่อนค่าศูนย์

เติมเซลล์ว่างทั้งหมด: (ทดสอบบน Mac)

  • แก้ไข→ไปที่ ... →พิเศษ ... (บน Windows: หน้าแรก→การแก้ไข→ค้นหาและเลือก→ไปที่พิเศษ ... )
  • เลือก "ว่าง" และกดตกลง
  • เซลล์ว่างทั้งหมดจะถูกเลือกทันที อย่าคลิกอะไรเลย
  • พิมพ์ "N / A" หรือ 0 แล้วกดCtrl+ †Enter สิ่งนี้จะแทรกค่าลงในเซลล์ที่เลือกทั้งหมด

การจัดรูปแบบตามเงื่อนไขเพื่อซ่อน "N / A"

  • รูปแบบ→การจัดรูปแบบตามเงื่อนไข
  • สร้างกฎใหม่
  • สไตล์: คลาสสิกและใช้สูตรเพื่อกำหนดเซลล์ที่จะจัดรูปแบบ
  • สูตร: =A1="N/A"
  • จัดรูปแบบด้วย: รูปแบบที่กำหนดเอง: สีตัวอักษรสีขาวไม่มีการเติม

ซ่อนเลขศูนย์

  • Excel →การตั้งค่า→มุมมอง
  • ยกเลิกการเลือก "แสดงค่าศูนย์"

_______________
  นั่นคือCtrl+ Enter, ไม่ Ctrl+ShiftEnter +


13

ลองป้อนสูตร = "" (นั่นคือเครื่องหมายคำพูดสองเท่า) ในเซลล์ที่อยู่ติดกันซึ่งคุณไม่ต้องการเห็นการล้น สิ่งนี้ประเมินว่าเป็น "null" ซึ่งไม่แสดงผลใด ๆ


1
เมื่อรวมกับโพสต์จากเบเนดิกต์ฉันเชื่อว่านี่เป็นหนึ่งในโซลูชั่นที่ง่ายที่สุดเพราะคุณไม่ต้องซ่อนอะไรเลย
Matt

สิ่งนี้ใช้ได้ผลดีที่สุดสำหรับฉัน
ปีเตอร์

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

4

ใช้การจัดแนวข้อความแนวนอน "เติม" สำหรับเซลล์ คุณสามารถค้นหาได้ในที่เดียวกับตัวเลือกการจัดแนวอื่น ๆ ที่ควรแก้ปัญหาของคุณ

เติมการจัดแนวข้อความ


4
สิ่งนี้ไม่ครอบคลุมโดยคำตอบของ Marcus Mangelsdorfหรือไม่
Stevoisiak

8
โปรดทราบว่ามาร์คัสอธิบายถึงปัญหาร้ายแรงด้วยวิธีนี้ - หากเนื้อหาของเซลล์สั้นพอพวกเขาจะถูกทำซ้ำ ดังนั้น "A" จะกลายเป็น "AAAAAAAA"
Blackwood

ขอบคุณมาก คลิกขวาที่เซลล์จำเป็นต้องฟอร์แมตใหม่เลือก "จัดรูปแบบเซลล์" และทำตามคำแนะนำของคุณ มันได้ผล
Catbuilts

4

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

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

1. คอลัมน์สิ่งกีดขวาง

ป้อนคำอธิบายรูปภาพที่นี่

2. แทรกคอลัมน์ "สิ่งกีดขวาง" ทางด้านซ้ายของคอลัมน์ที่คุณต้องการป้องกัน

ป้อนคำอธิบายรูปภาพที่นี่

3. ยุบคอลัมน์อุปสรรคโดยการตั้งค่าความกว้างคอลัมน์เป็นค่าเล็ก ๆ

ตั้งค่าความกว้างคอลัมน์เป็นค่าเช่น.1หรือให้คอลัมน์กั้นกว้างขึ้นเพื่อทำหน้าที่เป็นระยะขอบหรือช่องว่างระหว่างคอลัมน์

ป้อนคำอธิบายรูปภาพที่นี่

โปรดทราบว่าคุณต้องตั้งค่าความกว้างมากกว่าศูนย์ การตั้งค่าความกว้างคอลัมน์กั้นแนวตั้งเป็นศูนย์จะเปลี่ยนกลับไปเป็นลักษณะการล้นของเซลล์ที่ไม่พึงประสงค์

4. Voila!


1

ใน Excel ปรับคอลัมน์ตามความกว้างที่ต้องการจากนั้นเปิดใช้งานการแปรปรวนของคอลัมน์นั้น (ซึ่งจะทำให้ความสูงของแถวเพิ่มขึ้นทั้งหมด) จากนั้นเลือกแถวทั้งหมดและปรับความสูงของแถวให้สูงตามที่ต้องการ Voila! ตอนนี้คุณมีข้อความในเซลล์ที่ไม่ล้นไปยังเซลล์ที่อยู่ติดกัน

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


1
ย่อหน้าที่สองของคำถาม: "ฉันรู้ว่าฉันสามารถหลีกเลี่ยงสิ่งนี้ได้ด้วยการเปิดใช้งาน" การตัดคำ "และปรับความสูงของแถว แต่นั่นไม่ใช่สิ่งที่ฉันต้องการ"
fixer1234

0

ในบรรทัดเดียวกันของการคิดว่าGoogle ชีอาจไม่เหมาะสำหรับทุกคน , แมโครนี้อาจไม่เหมาะสำหรับทุกคน แต่มันอาจจะหาใครสักคน

มันทำงานผ่านช่วงที่เลือกและแทนที่เซลล์ที่ล้นด้วยข้อความที่ถูกตัดทอน

ธงพิจารณาว่า:

  • ข้อความที่ละเมิดจะถูกคัดลอกไปยังที่อยู่ญาติเดียวกันในแผ่นงานใหม่หรือถ้ามันถูกทิ้ง

  • ข้อความที่ถูกตัดทอนมีการเข้ารหัสยากหรือเชื่อมโยงผ่านสูตรแผ่นงาน =LEFT()

  • ข้อความที่ถูกตัดทอนจะเชื่อมโยงหลายมิติกับสตริงแบบเต็มในแผ่นงานใหม่

ค่าเริ่มต้นคือการเก็บข้อมูลและใช้ลิงก์ทั้งสอง

Option Explicit

Sub LinkTruncatedCells()
    Dim rng As Range: Set rng = Selection
    Dim preserveValues As Boolean: preserveValues = True
    Dim linkAsFormula As Boolean: linkAsFormula = True
    Dim linkAsHyperlink As Boolean: linkAsHyperlink = True
    Dim w As Single
    Dim c As Range
    Dim r As Range
    Dim t As Long
    Dim l As Long
    Dim s As String
    Dim ws As Worksheet
    Dim ns As Worksheet
    Application.ScreenUpdating = False
    Set ws = rng.Parent
    For Each c In rng.Columns
        w = c.ColumnWidth
        t = 0
        l = 0
        For Each r In c.Rows
            If Len(r) > l Then
                s = r
                If CBool(l) Then r = Left(s, l)
                Do
                    r.Columns.AutoFit
                    If r.ColumnWidth > w And Len(s) > t Then
                        t = t + 1
                        r = Left(s, Len(s) - t)
                        l = Len(r)
                    End If
                Loop Until t = Len(s) Or r.ColumnWidth <= w
                r.ColumnWidth = w
                If r <> s And preserveValues Then
                    If ns Is Nothing Then
                        Set ns = ws.Parent.Worksheets.Add(after:=ws)
                    End If
                    ns.Range(r.Address) = s
                    If linkAsFormula Then r.Formula = "=LEFT(" & ns.Name & "!" & r.Address & "," & l & ")"
                    If linkAsHyperlink Then ws.Hyperlinks.Add Anchor:=r, Address:="", SubAddress:= _
                            ns.Range(r.Address).Address(external:=True)
                End If
            End If
        Next r
    Next c
    ws.Activate
    Application.ScreenUpdating = True
End Sub

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.