2012-02-14 21:16:14 +0000 2012-02-14 21:16:14 +0000
91
91

Jak sprawić, aby funkcja "Auto Fit Row Height" programu Excel rzeczywiście automatycznie dopasować wysokość wiersza?

Dla każdej generacji programu Excel mogę zapamiętać (w tym 2010, którego używam teraz), funkcje “Auto Size Row” programu Excel czasami nie jest w stanie rzeczywiście automatycznie dopasować wysokość wiersza, gdy komórka zawiera zawinięty tekst. Gdy działa ona poprawnie, cały tekst jest ujawniany i nie ma dodatkowego miejsca pod ostatnim wierszem tekstu. W przypadku niepowodzenia funkcja ta dodaje dodatkowe miejsce pod tekstem. Co gorsza, to, co widzisz, nie zawsze jest tym, co dostajesz, tzn. tekst, który pojawił się na ekranie w porządku, zostaje odcięty po jego wydrukowaniu. Dostajesz również różne rozmiary w zależności od tego, czy jesteś powiększany/ pomniejszany, czy też w rzeczywistym rozmiarze.

Przypadek testowy:

Dlaczego po tekście w komórce A1 jest luka jednowierszowa, ale nie w A2?

(Aby odtworzyć: ustaw szerokość kolumny A na 17,14 (125 pikseli), zawiń tekst i wyrównanie komórek na górze)

(dwukrotnie sprawdziłem, czy zastosowałem Auto Fit Row Height do obu wierszy. Poziom powiększenia wynosi 100%)

Czy istnieje na to jakieś znane rozwiązanie bez uciekania się do ręcznego ustawiania wysokości wierszy (co nie jest praktyczne dla więcej niż kilku wierszy)?

Odpowiedzi (16)

106
106
106
2012-12-05 10:49:44 +0000

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

  • Wybierz cały arkusz.
  • Zmień rozmiar kolumny nieco szerzej (ponieważ cały arkusz jest wybrany, wszystkie kolumny będą szersze)
  • Kliknij dwukrotnie na separatorze wierszy - wysokość wiersza będzie automatycznie dopasowana
  • Kliknij dwukrotnie na separatorze kolumn - szerokość kolumny będzie automatycznie dopasowana

Voila!

13
13
13
2012-02-15 19:07:25 +0000

Excel’s WYSIWYG nie jest najlepszy. Na twoim zdjęciu, ‘kotku’ ledwo wkrada się do piątej linii. Jeśli zmniejszysz procent powiększenia do mniej niż 100% (na przykład do 99%), ‘kot’ będzie teraz owinięty w szóstą linię. Wydaje mi się, że Excel stara się dopasować w taki sposób, aby wszystko było prawie zawsze widoczne bez względu na poziom zoomu.

To nie jest jedyny problem, jaki będziesz miał z AutoFitem. Ponadto sposób, w jaki owijana słowem komórka jest drukowana, nie zawsze będzie odpowiadał temu, co widzisz na ekranie. Weź swój przykład i zmień czcionkę na Courier, pozostawiając rozmiar na 11.

Jak widzisz, komórka A1 wydaje się mieć 1,5 dodatkowych linii. Teraz spójrz na podgląd wydruku, ‘cat.’ jest całkowicie ukryty.

W moim doświadczeniu, Excel ma ten problem z pewnymi czcionkami i rozmiarami czcionek więcej niż inne. Courier jest gorszy niż Courier New , rozmiar 11 jest generalnie gorszy niż 10 lub 12. (Dlaczego wybrali rozmiar 11 jako nowy domyślny, nie mam pojęcia).

3
3
3
2016-01-22 08:51:09 +0000

Właśnie napisałem w tym celu małe makro. Przypisałem do niego klucz skrótowy (Ctrl-Shift-J) i działa on 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 uczynić to stale dostępnym, możesz w prosty sposób zrobić automatycznie ładujący się dodatek:

  • stworzyć moduł w świeżym, pustym skoroszycie i wkleić kod,
  • przypisać do niego klucz skrótowy, który chcesz,
  • następnie Save As, Add-in, do folderu %appdata%\Microsoft\Excel\XLSTART W ten sposób będzie on niewidoczny przy każdym uruchomieniu Excela.
0
0
0
2013-05-01 19:58:57 +0000

Istnieje kb artykuł na ten temat, który “sugeruje” (jest to niedopuszczalnie skąpe, w klasycznym stylu Microsoftu), że jeśli kiedykolwiek ustawisz wysokość rzędu, automatyczna regulacja wysokości zostanie na stałe zniesiona dla tego rzędu tego arkusza. Wiersze, których wysokości nie dotknąłeś, będą jednak automatycznie dopasowywane.

Podczas gdy w 2003 roku możesz zresetować szerokości kolumn z ustawieniem “standardowej szerokości” (szaleniec zaprojektował 2007: zmiana na “domyślną szerokość”), zapomnieli oni (ponownie) (i ponownie) umieścić to w wierszach. Tak więc trwałość wydaje się nieunikniona. Oznacza to, że jeśli masz domyślną wysokość 15, i tworzysz arkusz i ustawiasz wszystkie wysokości na 12, to po prostu tracisz automatyczne dopasowanie.

0
0
0
2013-07-05 17:03:56 +0000

Czasami istnieje jądrowa metoda naprawiania błędów autoproblemów.

To co robię, to kopiowanie tekstu z każdej komórki i wklejanie danych do Notatnika, a następnie usuwanie wiersza. 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 używając przycisków lewego wiersza)

Gdy to zrobisz, musisz wrócić i wstawić tekst z notatnika do każdej komórki. (Użyj F2 lub w inny sposób aktywuj tryb edycji każdej komórki przed wstawieniem tekstu). To ból, więc jest to ostatnia deska ratunku, zwłaszcza dla ginorąco szerokich arkuszy.

Czasami jest to jedyne rozwiązanie, ponieważ problem tkwi w samym programie.

0
0
0
2015-01-08 19:14:53 +0000

Nie sprawdziłem tego dokładnie, ale to działa na mnie. Zasadniczo będzie to automatyczne dostosowanie wszystkich arkuszy, a następnie przejść z powrotem i ustawić szerokość kolumny do pierwotnej szerokości, chyba że został przedłużony przez auto dostosować. Miałem tylko 10 kolumn i nigdy nie więcej niż 1000 wierszy, więc dostosować 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
0
0
0
2012-06-21 14:33:14 +0000

W niektórych przypadkach problem z dodatkowym miejscem w niektórych wierszach po wywołaniu “AutoFit Row Height” może być taki, że ukryta kolumna zawinęła tekst w tych wierszach.

-1
-1
-1
2013-04-08 16:10:30 +0000

Mam Excel 2010. Odkryłem, że ten problem przydarzył mi się, gdy moje ustawienie zoomu nie było na 100%. Tak długo, jak jestem na 100%, nie dostaję tekstu odciętego za pomocą AutoFit dla kolumn i wierszy

-1
-1
-1
2012-02-14 21:29:39 +0000

Parafrazując Dunc :

rozwiązałem podobny problem przez:

  1. Wybranie całego arkusza kalkulacyjnego.

  2. Podwójne kliknięcie w linię na marginesie pomiędzy dwoma wierszami.

Aby rozwiązać problem z tą dodatkową linią, zakładam, że jest tam jakiś znak. Może nie jest to znak widoczny, ale na pewno coś tam jest.

-1
-1
-1
2013-01-01 11:17:02 +0000

Ja również od wielu lat znoszę ten malutki, ale niezwykle rozpraszający uwagę błąd. Nie mam żadnej pracy, poza bawieniem się z szerokością wiersza w komórce, w której znajduje się większość tekstu, a w końcu program ustąpi i pokaże tekst poprawnie.

-1
-1
-1
2013-02-26 11:57:20 +0000

Jest proste rozwiązanie:

1) Zaznacz wszystkie wiersze, które mają być automatycznie sformatowane (jeśli jest to duży blok kliknij na pierwszym, a następnie naciśnij Shift+End i Shift+Down)

2) Kliknij prawym przyciskiem myszy na zaznaczenie, Formatuj komórki, Zakładka Wyrównanie, odznacz Wrap tekst.

Mam nadzieję, że to pomoże ;)

-1
-1
-1
2015-12-17 16:10:03 +0000

Właściwie to jest tam dodatkowa postać. Jest to ukryta postać LF, która znajduje się na końcu każdego pola. Kiedy tekst jest odpowiedniej wielkości, dodatkowy wiersz jest tam, aby utrzymać znak LF. Zmiana szerokości kolumny, jak sugerowały inne osoby, rozwiąże problem tej komórki, ale jeśli Twój arkusz kalkulacyjny ma wiele różnych wartości rozmiaru w tej samej kolumnie, możliwe, że poprawka dla tej komórki spowoduje, że inna komórka w kolumnie będzie miała problem. Nauczyłem się z tym żyć przez większość czasu.

-1
-1
-1
2012-08-06 12:19:12 +0000

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

To dlatego, że tekst kończy się zbyt blisko prawej krawędzi komórki. Jeśli dostosujesz kolumnę tak, aby była nieco szersza i podwójnie kliknęła między wierszami, to jej rozmiar zostanie odpowiednio zmieniony.

-1
-1
-1
2013-06-20 11:46:42 +0000

Moja hipoteza jest taka, że Excel zostaje zawiązany, gdy musi przedłużyć zbyt wiele linii. Miałem podobne doświadczenie do powyższego. To wyglądajakby na końcu było dodatkowe NL/CR/LF, ale wiem, że nie jest. Jeśli buduję komórkę kilka znaków na raz, to auto-formatuje OK, aż do osiągnięcia określonego rozmiaru, a następnie umieszcza w dodatkowej linii. (Podobne zachowanie w odwrotnej kolejności ma miejsce, jeśli zaczniesz od kasowania niektórych znaków). Dzieje się to w różnym czasie z różnymi komórkami.

Bummer!

Więc jeśli can zwiększysz szerokość komórki, prawdopodobnie możesz uniknąć problemu. Jeśli nie możesz (jak w moim przypadku), utknąłeś z ręcznym formatowaniem. Jak powiedziałem, “Bummer!”

-2
-2
-2
2013-01-30 20:38:33 +0000

wybierz wszystkie komórki i kliknij na linię oddzielającą dwa rzędy… to zrobi to automatycznie.

-2
-2
-2
2012-12-20 00:41:51 +0000

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