Jak sprawić, by funkcja „Automatyczne dopasowanie wysokości wiersza” programu Excel faktycznie automatycznie dopasowywała wysokość wiersza?

88

Dla każdej generacji programu Excel, który pamiętam (w tym 2010, którego teraz używam), funkcje „Automatycznie dopasuj rozmiar wiersza” programu Excel czasami nie powodują automatycznego rozmiaru wiersza, gdy komórka zawiera zawinięty tekst. Gdy działa poprawnie, cały tekst jest ujawniany i nie ma dodatkowej spacji pod ostatnim wierszem tekstu. Gdy się nie powiedzie, dodaje dodatkowe miejsce pod tekstem. Co gorsza, to, co widzisz, nie zawsze jest tym, co dostajesz, tzn. Tekst, który wyglądał dobrze na ekranie, zostaje odcięty po wydrukowaniu. Dostajesz również różne rozmiary w zależności od tego, czy jesteś powiększony / pomniejszony, czy w rzeczywistym rozmiarze.

Prosty przypadek testowy:

Dlaczego po tekście w komórce A1 występuje przerwa jednowierszowa, ale nie w A2?

(Aby odtworzyć: ustaw szerokość kolumny A na 17,14 (125 pikseli), zawiń tekst i wyrównaj komórki do góry.)

(Dwukrotnie sprawdziłem, czy zastosowałem opcję Auto Fit Row Row w obu rzędach. Poziom powiększenia wynosi 100%.)

Autodopasowanie kończy się niepowodzeniem w pierwszym rzędzie, udaje się w drugim

Czy istnieje jakikolwiek znany sposób na to bez konieczności ręcznego ustawiania wysokości rzędów (co nie jest praktyczne w przypadku więcej niż kilku rzędów)?

devuxer
źródło
W przypadku, gdy ktoś chce odtworzyć przykład z mojego pytania, szerokość kolumny A wynosi 17,15 (125 pikseli).
devuxer
1
Błąd wydaje się zależeć od czcionki i jej rozmiaru
Raystafarian
1
@Raystafarian, wydaje się nie działać przy włączonym zawijaniu tekstu.
devuxer
1
Próbowałem automatycznie dopasować kolumny, które poszerzyły jedną kolumnę, a następnie automatycznie dopasować wiersze. Dzięki temu zmniejszyło się to z 73 do 64 stron, ale nadal wiele pustych linii na dole większości wierszy. Mam wyrównane rzędy do góry. Ręczna zmiana wielkości wierszy sprawia, że ​​wyglądają OK, gdy pracuję nad dokumentem, ale nie w podglądzie ani w druku.
1
Tak, irytujące! Widziałem to także przynajmniej w programie Excel 2007. Nie przypominaj sobie, aby kiedykolwiek widziałem to w programie Excel 2003.
abstrask

Odpowiedzi:

105

Metoda, którą właśnie znalazłem (trochę rozszerzając poprzedni post):

  • Wybierz cały arkusz.
  • Zmień rozmiar kolumny nieco szerzej (ponieważ cały arkusz jest zaznaczony, wszystkie kolumny będą szersze)
  • Kliknij dwukrotnie separator wierszy - wysokość wiersza zostanie dopasowana automatycznie
  • Kliknij dwukrotnie separator kolumn - szerokości kolumn zostaną automatycznie dopasowane

Voila!

Nick Carrington
źródło
2
To naprawdę wydaje się działać. Jeden szary obszar to miejsce, w którym mówisz „trochę szerszy”. Jeden z przykładów, które wypróbowałem, nie zadziałał, chyba że rozłożyłem kolumnę w sporej wysokości, ale w końcu udało mi się go uruchomić. Dzięki!
devuxer
5
Wybrałem cały arkusz, a następnie dwukrotnie kliknąłem separator wierszy między dwoma losowymi wierszami, a cały dokument ponownie wyregulował wysokość wierszy.
Keith Sirmons,
6
Pamiętaj, że AutoFit nie działa w przypadku scalonych komórek: support.microsoft.com/kb/212010
freb
Czy ta metoda nie działa tylko wtedy, gdy wszystkie kolumny mają tę samą szerokość? Kiedy zmieniłem rozmiar kolumny nieco szerzej, wszystkie pozostałe kolumny stały się tej samej szerokości (w programie Excel 2010).
Ed Greaves,
Chwileczkę - ta metoda ma efekt uboczny polegający na zwiększeniu szerokości wszystkich kolumn w arkuszu, prawda?
Ant_222
13

WYSIWYG Excela nie jest najlepszy. Na twoim zdjęciu „kot”. ledwo zakrada się do 5. linii. Jeśli zmniejszysz procent powiększenia do wartości mniejszej niż 100% (na przykład 99%), wówczas „cat”. jest teraz zawinięty do szóstej linii. Myślę, że Excel próbuje automatycznie dopasować w sposób, który zapewni, że wszystko będzie prawie zawsze widoczne bez względu na poziom powiększenia.

To nie jedyny problem, jaki będziesz mieć z AutoFit. Ponadto sposób drukowania zawiniętej komórki nie zawsze będzie pasował do tego, co widzisz na ekranie. Weź przykład i zmień czcionkę na Courier, pozostawiając rozmiar 11.

Zmieniono czcionkę na Courier

Jak widać, komórce A1 wydaje się otrzymać 1,5 dodatkowego wiersza. Teraz spójrz na podgląd wydruku „cat”. jest całkowicie ukryty.

podgląd wydruku tego samego pliku

Z mojego doświadczenia wynika, że ​​Excel ma ten problem z niektórymi czcionkami i rozmiarami czcionek bardziej niż inne. Kurier jest gorszy niż kurier Nowy , rozmiar 11 jest zwykle gorszy niż 10 lub 12. (Dlaczego wybrali rozmiar 11 jako nowy domyślny, nie mam pojęcia).

mischab1
źródło
Więc ... w zasadzie to złamali. Twoje wyjaśnienie jest jednak prawdopodobne, ale naprawdę mnie to wkurza, że ​​jest tak: - /
abstrask
3

Właśnie napisałem w tym celu małe makro. Przypisałem mu klawisz skrótu (Ctrl-Shift-J) i działa jak urok dla mnie.

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

Aby było to stale dostępne, możesz łatwo zrobić automatycznie ładujący się dodatek:

  • utwórz moduł w świeżym pustym skoroszycie i wklej kod,
  • przypisz mu odpowiedni klawisz skrótu,
  • Następnie Save As, Add-indo folderu %appdata%\Microsoft\Excel\XLSTART
    ten sposób będzie niewidoczny załadowany przy każdym uruchomieniu programu Excel.
Patrick Honorez
źródło
Lub możesz to zrobić: Private Sub Worksheet_Change (ByVal Target As Range) ArrangeTable End Sub
kurdtpage
0

W niektórych przypadkach problemem dodatkowej przestrzeni w niektórych wierszach po wywołaniu „Autodopasowania wysokości wiersza” może być to, że ukryta kolumna zawija tekst w tych wierszach.

BobO
źródło
Tak nie jest w tym pytaniu.
Dmitrij Grigoriew
0

Jest artykuł na ten temat, który „sugeruje” (jest to niedopuszczalnie rzadkie, w klasycznej modzie Microsoftu), że jeśli kiedykolwiek ustawisz wysokość wiersza, automatyczne dopasowywanie wysokości zostanie trwale wyłączone dla tego wiersza tego arkusza. Jednak rzędy, których wysokości nie dotknąłeś, będą dobrze pasować.

Podczas gdy możesz zresetować szerokości kolumn z ustawieniem „standardowej szerokości” w 2003 roku (szaleniec zaprojektowany 2007: zmień na „domyślną szerokość”), ale zapomnieli (znowu) (i znowu), aby umieścić to w wierszach. Trwałość wydaje się więc nieunikniona. Oznacza to, że jeśli masz domyślną wysokość 15 i utworzysz arkusz i ustawisz wszystkie wysokości na 12, po prostu utraciłeś automatyczne dopasowanie.

GatesIsAntichrist
źródło
1
Nie mogę powielić tego zachowania. Jak tylko zrobię „Auto Fit Row Row”, wszelkie ręczne ustawienia wysokości dla tego rzędu są natychmiast zastępowane wysokością Auto-Fit. Problem polega po prostu na tym, że wysokość automatycznego dopasowania jest często nieprawidłowa.
devuxer
MOGĘ powielić to zachowanie. To jest dokładnie tak, jak dla mnie działa.
Peter Nore,
0

Czasami istnieje metoda nuklearna do naprawy niewłaściwie działających autoproblemów.

To, co robię, to skopiuj tekst z każdej komórki i wklej dane do Notatnika, a następnie usuń wiersz. Następnie natychmiast kopiuję i wstawiam wiersz, który jest pusty, ale ma takie samo formatowanie i dobre zachowanie jak wiersz, który został usunięty. (Musisz skopiować i wstawić cały wiersz za pomocą przycisków lewego rzędu).

Gdy to zrobisz, musisz wrócić i wstawić tekst z notatnika do każdej komórki. (Użyj F2lub w inny sposób aktywuj tryb edycji każdej komórki przed wstawieniem tekstu.) Jest to ból, więc jest to ostateczność, szczególnie w przypadku gigantycznie szerokich arkuszy roboczych.

Jest to czasami jedyne rozwiązanie, ponieważ problem tkwi w samym programie.

Paweł
źródło
1
skopiuj tekst z każdej komórki - wydaje się, że wymaga to tyle pracy, ile wymagałoby ręcznego formatowania.
Dmitrij Grigoriew
0

Nie przetestowałem tego dokładnie, ale działa na mnie. Zasadniczo automatycznie dopasuje wszystkie arkusze, a następnie wróci i ustawi szerokość kolumny na pierwotną szerokość, chyba że zostanie ona przedłużona przez automatyczne dopasowanie. Miałem tylko 10 kolumn i nigdy więcej niż 1000 wierszy, więc dostosuj kod w razie potrzeby.

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
Dan Williams
źródło
Jak rozwiązuje problem błędu dopasowania? Automatycznie dopasowujesz wiersze, następnie automatycznie dopasowujesz kolumny, a następnie ponownie dopasowujesz oryginalne szerokości kolumn. Dlaczego uzyskuje się prawidłową wysokość rzędu dopasowania? Nawiasem mówiąc, totalWidthjest bezrobotny.
Ant_222
Nie działa to dla mnie w pełni, ponieważ przywracasz szerokość tylko tych kolumn, które stały się węższe. W związku z tym algorytm nie zachowuje szerokości kolumny.
Ant_222
-1

Parafrazując Dunc :

Rozwiązałem podobny problem przez:

  1. Wybór całego arkusza kalkulacyjnego.

  2. Podwójne kliknięcie linii na marginesie między dwoma rzędami.

W szczególności, aby rozwiązać problem dodatkowej linii, zakładam, że jest tam postać. To może nie być widoczna postać, ale na pewno coś tam jest.

wizlog
źródło
3
Twoje kroki nie różnią się od tych, które już wypróbowałem (dwukrotne kliknięcie między wierszami to tylko skrót do „Auto Fit Height Row”). Jeśli chodzi o twoją teorię, że istnieje dodatkowa postać, możesz mieć rację, ale z pewnością jej nie wpisałem i nie wiedziałbym, jak się jej pozbyć. Zapraszam do wpisania dokładnego tekstu, takiego jak na ilustracji w Excelu i sprawdzenia, czy uzyskasz te same wyniki.
devuxer
1
Nie ma tam mojej postaci.
Raystafarian
-1

Nie poświęciłem czasu na przeczytanie innych komentarzy. Dlaczego linia na dole pierwszego bloku, a nie w drugim bloku?

Jest tak, ponieważ tekst kończy się zbyt blisko prawej krawędzi komórki. Jeśli dostosujesz kolumnę, aby była nieco szersza i dwukrotnie klikniesz między wierszami, odpowiednio zmieni rozmiar.

Renier Wessels
źródło
4
Nie mam wątpliwości, że masz rację, ale to już nie jest „auto”, to jest ręczne.
devuxer,
-1

Ja również znosiłem ten malutki, ale bardzo rozpraszający błąd od wielu lat. Nie mam żadnego obejścia, z wyjątkiem majstrowania przy szerokości wiersza dla komórki z większą ilością tekstu, a ostatecznie program ustąpi i poprawnie wyświetli tekst.

Andrew Buchanan
źródło
kręcenie się z szerokością rzędu nie jest powtarzalnym rozwiązaniem.
Dmitrij Grigoriew
-1

Istnieje proste rozwiązanie:

1) Zaznacz wszystkie wiersze, które chcesz automatycznie sformatować (jeśli jest to duży blok, kliknij pierwszy, a następnie naciśnij Shift + End i Shift + Dół)

2) Kliknij zaznaczenie prawym przyciskiem myszy, Formatuj komórki, kartę Wyrównanie, odznacz Zawiń tekst.

Mam nadzieję że to pomoże ;)

Pedro
źródło
1
Jeśli usuniesz zaznaczenie Wrap text, automatyczne dostosowywanie wysokości wierszy nie ma już sensu, ponieważ wszystkie rzędy będą miały ten sam rozmiar.
Dmitrij Grigoriew
Ten problem niepokoi mnie od lat. Przełączanie zawijania tekstu dla kłopotliwego wiersza przywróciło funkcję automatycznego dopasowania.
Mitch,
-1

Mam program Excel 2010. Odkryłem, że ten problem przydarzył mi się, gdy moje ustawienie Zoom nie było na 100%. Dopóki mam 100%, tekst nie jest odcinany za pomocą funkcji AutoFit dla kolumn i wierszy

Kevin Morin
źródło
3
W przykładzie, którego użyłem do pytania, byłem cały czas przy powiększeniu = 100%. Problem pojawił się niezależnie.
devuxer
-1

Moja hipoteza jest taka, że ​​Excel jest wiązany, gdy musi przedłużyć zbyt wiele linii. Miałem podobne doświadczenie do powyższego. To wygląda jak tam dodatkowy NL / CR / LF na końcu, ale wiem, że nie jest. Jeśli zbuduję komórkę kilka znaków na raz, formatuje ona automatycznie OK, aż do osiągnięcia określonego rozmiaru, a następnie wstawia dodatkową linię. (Podobne zachowanie występuje w odwrotnej kolejności, jeśli zaczniesz od usunięcia niektórych znaków.) Dzieje się tak w różnych momentach z różnymi komórkami.

Porażka!

Jeśli więc możesz zwiększyć szerokość komórki, prawdopodobnie możesz uniknąć problemu. Jeśli nie możesz (tak jak w moim przypadku), utkniesz w ręcznym formatowaniu. Jak powiedziałem: „Bummer!”

GeoffH
źródło
-1

W rzeczywistości jest tam dodatkowa postać. To ukryta postać LF, która znajduje się na końcu każdego pola. Gdy tekst ma odpowiedni rozmiar, dodatkowy wiersz zawiera znak LF. Zmiana rozmiaru kolumny zgodnie z sugestią innych osób rozwiąże problem z tą komórką, ale jeśli arkusz kalkulacyjny ma wiele różnych wartości wielkości w tej samej kolumnie, możliwe, że poprawka dla tej komórki spowoduje problem z inną komórką w kolumnie . Przez większość czasu nauczyłem się z tym żyć.

phipywr
źródło
Z pewnością nie ma ukrytego znaku LF na końcu każdego pola, chyba że OP umieścił go tam za pomocą Alt + Enter. Pytanie tak naprawdę dotyczy przypadku, gdy nie ma znaku nowej linii, ale Excel nadal nie wyrówna poprawnie komórek.
Dmitrij Grigoryev,
-2

To, co zadziałało dla mnie (Excel 2010), to usunięcie około stu nieużywanych kolumn po prawej stronie moich danych. Mogę tylko zgadywać, że było coś, co powodowało nieprawidłowe zachowanie wysokości wiersza automatycznego.

Runk
źródło
4
Widzę, jak to by pomogło, ale nie ma to znaczenia dla przypadku testowego pokazanego w moim pytaniu.
devuxer,
-2

zaznacz wszystkie komórki i kliknij dwukrotnie linię oddzielającą rzędy ... zrobi to automatycznie.

Paweł
źródło