วิธีทำให้คุณสมบัติ "ความสูงของแถวพอดีอัตโนมัติ" ของ Excel ทำให้พอดีกับความสูงของแถวโดยอัตโนมัติได้อย่างไร


88

สำหรับ Excel ทุกรุ่นที่ฉันจำได้ (รวมถึงปี 2010 ที่ฉันใช้อยู่ตอนนี้) คุณสมบัติ "แถวขนาดอัตโนมัติ" ของ Excel บางครั้งอาจล้มเหลวในการกำหนดขนาดแถวโดยอัตโนมัติเมื่อเซลล์มีข้อความที่ห่อ เมื่อทำงานอย่างถูกต้องข้อความทั้งหมดจะถูกเปิดเผยและไม่มีที่ว่างเพิ่มเติมใต้บรรทัดสุดท้ายของข้อความ เมื่อมันล้มเหลวมันจะเพิ่มพื้นที่พิเศษใต้ข้อความ เพื่อทำให้เรื่องแย่ลงสิ่งที่คุณเห็นไม่ใช่สิ่งที่คุณได้รับเช่นข้อความที่ปรากฏบนหน้าจอจะถูกตัดเมื่อถูกพิมพ์ นอกจากนี้คุณยังได้ขนาดที่แตกต่างกันขึ้นอยู่กับว่าคุณซูมเข้า / ออกหรือขนาดจริง

กรณีทดสอบอย่างง่าย:

เหตุใดจึงมีช่องว่างหนึ่งบรรทัดหลังข้อความในเซลล์ A1 แต่ไม่ใช่ใน A2

(ในการทำให้เกิดใหม่: ตั้งค่าความกว้างของคอลัมน์ A ถึง 17.14 (125 พิกเซล), การตัดข้อความและด้านบนของการจัดตำแหน่งเซลล์)

(ฉันตรวจสอบอีกครั้งว่าฉันใช้ความสูงของแถวพอดีอัตโนมัติกับทั้งสองแถวระดับการซูมคือ 100%)

Auto Fit ล้มเหลวในแถวแรกสำเร็จเป็นครั้งที่สอง

มีวิธีการรักษาแบบใดที่รู้จักกันโดยไม่ต้องใช้วิธีปรับความสูงของแถวด้วยตนเอง (ซึ่งไม่เหมาะกับการใช้แถวมากกว่าหนึ่งแถว)?


ในกรณีที่ทุกคนต้องการทำซ้ำตัวอย่างในคำถามของฉันความกว้างของคอลัมน์ A คือ 17.15 (125 พิกเซล)
devuxer

1
ข้อผิดพลาดดูเหมือนขึ้นอยู่กับขนาดตัวอักษรและขนาดตัวอักษร
Raystafarian

1
@Raystafarian ดูเหมือนว่าจะไม่สามารถใช้งานได้กับ Wrap Text
devuxer

1
ฉันพยายามป้อนคอลัมน์อัตโนมัติซึ่งเพิ่มคอลัมน์หนึ่งคอลัมน์จากนั้นป้อนอัตโนมัติแถว นั่นทำให้มันลดลงจาก 73 เป็น 64 หน้า แต่ก็ยังมีบรรทัดว่างจำนวนมากที่ด้านล่างของแถวส่วนใหญ่ ฉันมีแถวชิดด้านบน การเปลี่ยนขนาดของแถวด้วยตนเองทำให้ดูโอเคเมื่อฉันทำงานกับเอกสาร แต่ไม่ได้อยู่ในหน้าตัวอย่างหรือพิมพ์

1
ใช่น่ารำคาญมาก! ยังเห็นสิ่งนี้อย่างน้อยใน Excel 2007 อย่าจำได้ว่าเคยเห็นใน Excel 2003
abstrask

คำตอบ:


105

วิธีที่ฉันเพิ่งค้นพบ (ขยายโพสต์ก่อนหน้าเล็กน้อย):

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

Voila!


2
ดูเหมือนว่าจะใช้งานได้จริง พื้นที่สีเทาอันเดียวคือบริเวณที่คุณพูดว่า "กว้างขึ้นเล็กน้อย" หนึ่งในตัวอย่างที่ฉันลองใช้ไม่ได้ผลเว้นแต่ฉันจะยืดจำนวนคอลัมน์ออกมาพอสมควร แต่ในที่สุดฉันก็ทำให้มันใช้งานได้ ขอบคุณ!
devuxer

5
ฉันเลือกทั้งแผ่นจากนั้นดับเบิลคลิกที่ตัวคั่นแถวระหว่างแถวสุ่มสองแถวกับเอกสารทั้งหมดปรับความสูงของแถวอีกครั้ง
Keith Sirmons

6
โปรดทราบว่าการปรับพอดีอัตโนมัติไม่ทำงานสำหรับเซลล์ที่ผสาน: support.microsoft.com/kb/212010
freb

วิธีนี้ใช้งานไม่ได้หรือไม่หากคอลัมน์ทั้งหมดมีความกว้างเท่ากัน เมื่อฉันปรับขนาดคอลัมน์กว้างขึ้นเล็กน้อยคอลัมน์อื่น ๆ ทั้งหมดกลายเป็นความกว้างเท่ากัน (ใน Excel 2010)
Ed Greaves

รอสักครู่ - วิธีนี้มีผลข้างเคียงของการเพิ่มความกว้างของคอลัมน์ทั้งหมดในแผ่นงานใช่ไหม
Ant_222

13

WYSIWYG ของ Excel นั้นไม่ดีที่สุด ในภาพของคุณ 'แมว' เพิ่งย่องเข้าไปในบรรทัดที่ 5 หากคุณลดเปอร์เซ็นต์การซูมให้น้อยกว่า 100% (เช่น 99%) ให้เลือก 'cat' ถูกรวมกับบรรทัดที่ 6 ฉันคิดว่า Excel พยายามปรับให้พอดีโดยอัตโนมัติเพื่อให้มั่นใจว่าทุกอย่างจะปรากฏให้เห็นทุกครั้งไม่ว่าจะอยู่ในระดับการซูมของคุณ

นั่นไม่ใช่ปัญหาเดียวที่คุณจะมีกับ AutoFit นอกจากนี้วิธีพิมพ์เซลล์ที่ห่อคำจะไม่ตรงกับสิ่งที่คุณเห็นบนหน้าจอเสมอ นำตัวอย่างของคุณและเปลี่ยนแบบอักษรเป็น Courier ในขณะที่ปล่อยขนาดไว้ที่ 11

เปลี่ยนแบบอักษรเป็น Courier

อย่างที่คุณเห็นเซลล์ A1 ดูเหมือนจะได้รับ 1.5 บรรทัดพิเศษ ตอนนี้ดูตัวอย่างก่อนพิมพ์ 'cat' ถูกซ่อนไว้อย่างสมบูรณ์

ตัวอย่างก่อนพิมพ์ของไฟล์เดียวกัน

จากประสบการณ์ของฉัน Excel มีปัญหากับแบบอักษรและขนาดแบบอักษรบางอย่างมากกว่าขนาดอื่น ๆ Courierแย่กว่าCourier Newขนาด 11 โดยทั่วไปแย่กว่า 10 หรือ 12 (ทำไมพวกเขาเลือกขนาด 11 เป็นค่าเริ่มต้นใหม่ฉันไม่รู้เลย)


ดังนั้น ... โดยพื้นฐานแล้วพวกเขาทำลายมัน คุณอธิบายได้ว่าเป็นไปได้ แต่จริง ๆ แล้วมันทำให้ฉันเป็นโรคจิตว่ามันเป็นเช่นนี้: - /
abstrask

3

ฉันเพิ่งเขียนแมโครขนาดเล็กเพื่อจุดประสงค์นั้น ฉันกำหนดแป้นพิมพ์ลัด (Ctrl-Shift-J) และใช้งานได้อย่างมีเสน่ห์สำหรับฉัน

Sub ArrangeTable()
'set proper column width and row height for the current region
    With Selection.CurrentRegion
        .Columns.ColumnWidth = 200
        .Columns.EntireColumn.AutoFit
        .Rows.EntireRow.AutoFit
    End With
End Sub

ในการทำให้สิ่งนี้สามารถใช้งานได้อย่างถาวรคุณสามารถทำการโหลดโดยอัตโนมัติได้อย่างง่ายดาย:

  • สร้างโมดูลในเวิร์กบุ๊กใหม่ที่ว่างเปล่าและวางรหัส
  • กำหนดปุ่มทางลัดที่คุณต้องการ
  • แล้วSave As, Add-inเพื่อโฟลเดอร์%appdata%\Microsoft\Excel\XLSTART
    วิธีนี้มันจะถูกโหลดลูกหูลูกตาทุกครั้งที่คุณเริ่ม Excel

หรือคุณสามารถทำได้: Private Sub Worksheet_Change (ByVal Target As Range) ArrangeTable End Sub
kurdtpage

0

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


ซึ่งไม่ใช่กรณีในคำถามนี้
Dmitry Grigoryev

0

มีบทความ kbเกี่ยวกับสิ่งนี้ซึ่ง "แนะนำ" (มันเบาบางไม่เป็นที่ยอมรับในรูปแบบคลาสสิกของ Microsoft) ว่าหากคุณเคยตั้งค่าความสูงของแถวความสูงของการป้อนอัตโนมัติโดยอัตโนมัติจะหายไปอย่างถาวรสำหรับแถวของแผ่นงานนั้น แถวที่ความสูงที่คุณไม่ได้แตะจะปรับได้โดยอัตโนมัติ

ในขณะที่คุณสามารถรีเซ็ตความกว้างคอลัมน์ด้วยการตั้งค่า "ความกว้างมาตรฐาน" ในปี 2003 (ออกแบบโดยคนบ้า 2007: เปลี่ยนเป็น "ความกว้างเริ่มต้น") แต่พวกเขาลืม (อีกครั้ง) (และอีกครั้ง) เพื่อใส่ลงในแถว ดังนั้นความคงทนจึงดูเหมือนหลีกเลี่ยงไม่ได้ นั่นหมายความว่าถ้าคุณมีความสูงเริ่มต้นที่ 15 และคุณสร้างแผ่นงานและตั้งค่าความสูงทั้งหมดเป็น 12 คุณก็จะสูญเสียการป้อนอัตโนมัติโดยอัตโนมัติ


1
ฉันไม่สามารถทำซ้ำพฤติกรรมนี้ ทันทีที่ฉันทำ "Auto Fit Row Height" การตั้งค่าความสูงด้วยตนเองสำหรับแถวนั้นจะถูกแทนที่ด้วยความสูงแบบปรับอัตโนมัติได้ทันที ปัญหาก็คือว่าความสูงพอดีอัตโนมัติมักจะผิด
devuxer

ฉันสามารถทำซ้ำพฤติกรรมนี้ ตรงนี้เป็นสิ่งที่เหมาะกับฉัน
Peter Nore

0

บางครั้งมีวิธีนิวเคลียร์เพื่อแก้ไขสัญลักษณ์ที่ทำงานผิดปกติ

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

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

มันเป็นวิธีแก้ปัญหาเฉพาะบางครั้งเนื่องจากปัญหาอยู่ในโปรแกรมเอง


1
คัดลอกข้อความออกจากแต่ละเซลล์ - ดูเหมือนว่าจะต้องใช้งานมากเท่ากับการจัดรูปแบบด้วยตนเอง
Dmitry Grigoryev

0

ฉันยังไม่ได้ทำการทดสอบอย่างละเอียด แต่มันใช้ได้สำหรับฉัน โดยพื้นฐานแล้วมันจะปรับแผ่นงานทั้งหมดโดยอัตโนมัติจากนั้นย้อนกลับไปและตั้งค่าความกว้างคอลัมน์เป็นความกว้างดั้งเดิมยกเว้นว่าจะมีการขยายโดยการปรับอัตโนมัติ ฉันมีเพียง 10 คอลัมน์และไม่เกิน 1,000 แถวจึงปรับรหัสตามต้องการ

Sub ResizeCells()
    Dim sheetCounter As Integer
    Dim rowCounter As Integer
    Dim colCounter As Integer
    Dim totalWidth As Double
    Dim oldColWidths(1 To 10) As Double

    For sheetCounter = 1 To ThisWorkbook.Sheets.Count
        ActiveWorkbook.Worksheets(sheetCounter).Select
        totalWidth = 0

        ' Extend the columns out to 200
        For colCounter = 1 To 10
            oldColWidths(colCounter) = Cells(1, colCounter).ColumnWidth
            totalWidth = totalWidth + oldColWidths(colCounter)
            Cells(1, colCounter).ColumnWidth = 200
        Next

        For rowCounter = 4 To 1000
            If Cells(rowCounter, 1).Value <> "" Or Cells(rowCounter, 2).Value <> "" Or Cells(rowCounter, 3).Value <> "" Then
                Rows(rowCounter & ":" & rowCounter).EntireRow.AutoFit
            End If
        Next

        ' do autofit
        For colCounter = 1 To 10
            Cells(1, colCounter).EntireColumn.AutoFit
        Next

        ' reset to original values if current width is less than the original width.
        For colCounter = 1 To 10
            If Cells(1, colCounter).ColumnWidth < oldColWidths(colCounter) + 0.25 Then
                Cells(1, colCounter).ColumnWidth = oldColWidths(colCounter)
            End If
        Next
    Next
End Sub

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

มันไม่ได้ผลสำหรับฉันเพราะคุณคืนค่าความกว้างของ colunns ที่แคบลงเท่านั้น อัลกอริทึมของคุณจึงไม่รักษาความกว้างของคอลัมน์
Ant_222

-1

ในการถอดความDunc :

ฉันได้แก้ไขปัญหาที่คล้ายกันโดย:

  1. การเลือกสเปรดชีตทั้งหมด

  2. คลิกสองครั้งที่บรรทัดในระยะห่างระหว่างสองแถว

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


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

1
ไม่มีตัวละครอยู่ในเหมือง
Raystafarian

-1

ฉันไม่ได้ใช้เวลาในการอ่านความคิดเห็นอื่น ๆ ทำไมเส้นที่ด้านล่างของบล็อกแรกและไม่อยู่ในบล็อกที่สอง?

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


4
ฉันไม่สงสัยเลยว่าคุณถูกต้องแล้ว แต่นั่นไม่ใช่ "อัตโนมัติ" อีกต่อไปมันเป็นคู่มือ
devuxer

-1

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


การวนรอบด้วยความกว้างของแถวไม่ใช่ทางออกที่สามารถทำซ้ำได้
Dmitry Grigoryev

-1

มีทางออกที่ง่าย:

1) เลือกแถวทั้งหมดที่คุณต้องการจัดรูปแบบอัตโนมัติ (ถ้าเป็นบล็อกขนาดใหญ่ให้คลิกที่แถวแรกจากนั้นกด Shift + End และ Shift + Down)

2) คลิกขวาที่ส่วนที่เลือกจัดรูปแบบเซลล์แท็บจัดตำแหน่งยกเลิกการเลือกตัดข้อความ

หวังว่านี่จะช่วยได้;)


1
หากคุณยกเลิกการเลือกWrap textจะไม่มีการปรับความสูงแถวของคุณอีกต่อไปเนื่องจากแถวทั้งหมดจะมีขนาดเท่ากัน
Dmitry Grigoryev

ฉันกังวลกับปัญหานี้มาหลายปีแล้ว Toggling Wrap Text สำหรับแถวที่ลำบากช่วยให้ฟังก์ชัน autofit คืนค่า
มิทช์

-1

ฉันมี Excel 2010 ฉันพบว่าปัญหานี้เกิดขึ้นกับฉันเมื่อการตั้งค่าซูมของฉันไม่เท่ากับ 100% ตราบใดที่ฉันยัง 100% ฉันจะไม่ได้รับข้อความที่ตัดออกด้วยการปรับพอดีอัตโนมัติสำหรับคอลัมน์และแถว


3
ในตัวอย่างที่ฉันใช้สำหรับคำถามของฉันฉันอยู่ที่ซูม = 100% ตลอดเวลา ปัญหาที่เกิดขึ้นโดยไม่คำนึงถึง
devuxer

-1

สมมติฐานของฉันคือ Excel ได้รับการผูกปมเมื่อต้องขยายบรรทัดมากเกินไป ฉันมีประสบการณ์คล้ายกับข้างต้น มันมีลักษณะเหมือนมีพิเศษ NL / CR / LF ที่สิ้นสุด แต่ฉันรู้ว่ามีไม่ ถ้าฉันสร้างเซลล์ในแต่ละครั้งตัวอักษรมันจะเป็นรูปแบบอัตโนมัติตกลงจนกว่าจะถึงขนาดที่เฉพาะเจาะจงแล้วมันจะใส่ในบรรทัดพิเศษ (พฤติกรรมที่คล้ายกันในการย้อนกลับเกิดขึ้นถ้าคุณเริ่มต้นด้วยการลบตัวอักษรบางตัว) มันเกิดขึ้นในเวลาที่ต่างกันกับเซลล์ที่แตกต่าง

แย่จัง!

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


-1

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


แน่นอนว่าไม่มีอักขระ LF ที่ซ่อนอยู่ที่ท้ายของทุกฟิลด์ยกเว้นว่า OP ได้ใส่ไว้ที่นั่นด้วย Alt + Enter คำถามนี้เกี่ยวกับกรณีจริง ๆ เมื่อไม่มีอักขระขึ้นบรรทัดใหม่ แต่ Excel ยังคงล้มเหลวในการจัดเซลล์อย่างเหมาะสม
Dmitry Grigoryev

-2

สิ่งที่ใช้ได้ผลสำหรับฉัน (Excel 2010) คือการลบคอลัมน์ที่ไม่ได้ใช้ร้อยคอลัมน์ไปทางด้านขวาของข้อมูลของฉัน ฉันเดาได้แค่ว่ามีบางอย่างที่ทำให้ความสูงของแถวอัตโนมัติผิดไป


4
ฉันเห็นว่ามันจะช่วยได้อย่างไร แต่ก็ไม่ได้สร้างความแตกต่างให้กับกรณีทดสอบที่แสดงในคำถามของฉัน
devuxer

-2

เลือกเซลล์ทั้งหมดและคลิกที่บรรทัดที่แยกแถวสองครั้ง ... มันจะทำโดยอัตโนมัติ

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