Як зробити так, щоб функція "Автоматична висота рядка" Excel фактично автоматично підходила до висоти рядка?


88

Я можу запам'ятати кожне покоління Excel (включаючи 2010 рік, який я зараз використовую). Особливості "Автоматичний розмір рядка" Excel іноді не вдається фактично розмістити рядки, коли комірка містить загорнутий текст. Якщо він працює належним чином, весь текст розкривається і немає додаткового місця під останнім рядком тексту. Коли це не вдається, це додає додаткового місця під текстом. Що ще гірше, те, що ви бачите, - це не завжди те, що ви отримуєте, тобто текст, який на екрані здався нормальним, відрізається під час друку. Ви також можете отримати різні розміри залежно від того, чи ви збільшуєте / зменшуєте чи фактично розмір.

Простий тестовий випадок:

Чому після тексту в комірці А1 є однорядковий розрив, а не в А2?

(Для відтворення: встановіть ширину стовпця А до 17,14 (125 пікселів), загортання тексту та вирівнювання комірки вгорі.)

(Я ще раз перевірив, чи застосував Автоматичну висоту рядка до обох рядків. Рівень масштабування становить 100%.)

Функція Auto Fit виходить з ладу для першого ряду, успішна для другого

Чи є якийсь відомий засіб для цього, не вдаючись до ручного регулювання висоти рядків (що не практично для кількох рядків)?


Якщо хтось хоче відтворити приклад у моєму запитанні, ширина стовпця А становить 17,15 (125 пікселів).
devuxer

1
Помилка здається залежною від розміру шрифту та розміру шрифту
Raystafarian

1
@Raystafarian, схоже, не працює з увімкненим текстом Wrap Text.
devuxer

1
Я спробував виконати автоматичне налаштування стовпців, які розширили один стовпець, а потім автоматично налаштували рядки. Це зменшило його з 73 до 64 сторінок, але все ще багато порожніх рядків у нижній частині більшості рядків. У мене рядки вирівняні вгорі. Вручну зміна розміру рядків робить це добре, коли я працюю над документом, але не в попередньому перегляді чи друку.

1
Так, так дратує! Також бачили це принаймні в Excel 2007. Не пригадайте, коли б його бачили в Excel 2003.
abstrask

Відповіді:


105

Я знайшов метод (трохи подовживши попереднє повідомлення):

  • Виберіть весь аркуш.
  • Змініть розмір стовпця трохи ширше (оскільки вибрано весь аркуш, усі стовпці будуть ширшими)
  • Двічі клацніть роздільник рядків - висота рядка буде встановлена ​​автоматично
  • Двічі клацніть роздільник стовпців - ширина стовпця буде автоматично налаштована

Вуаля!


2
Це справді, здається, працює. Єдина сіра зона - це те, де ви говорите «трохи ширше». Один із прикладів, які я спробував, не спрацював, якщо я не розтягнув стовпчик неабияку суму, але в кінцевому підсумку я змусив його працювати. Дякую!
devuxer

5
Я вибрав цілий аркуш, потім двічі клацнув роздільником рядків між двома випадковими рядками, і весь документ повторно відкоригував висоту рядка.
Кіт Сірмонс

6
Зауважте, що
функція AutoFit

Чи не працює цей метод лише в тому випадку, якщо всі стовпці однакової ширини? Коли я змінив розмір стовпця трохи ширше, всі інші стовпці стали однакової ширини (в 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 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

У деяких випадках проблема додаткового простору в деяких рядках після виклику "Автовимірювання висоти рядка" може полягати в тому, що прихований стовпець загорнув текст у ці рядки.


Що в цьому питанні не так.
Дмитро Григор’єв

0

Про це є стаття kb, яка «підказує» (це неприпустимо рідко, в класичному стилі Microsoft), що якщо ви коли-небудь встановите висоту рядка, автоматичне автоматичне встановлення висоти буде назавжди відхилено для цього рядка цього робочого аркуша. Рядки, висоти яких ви не торкалися, автоматично налаштовують чудово.

Хоча ви можете скинути ширину стовпців за допомогою параметра "стандартна ширина" у 2003 році (розроблений безумним 2007: змінити на "ширина за замовчуванням"), але вони забули (знову) (і знову), щоб ввести це для рядків. Тому постійність здається неминучою. Це означає, що якщо у вас висота за замовчуванням 15, і ви створюєте аркуш і встановлюєте всі висоти до 12, ви просто втратили автоматичне автоматичне налаштування.


1
Я не можу дублювати цю поведінку. Щойно я роблю "Автоматична висота рядка", будь-яка установка висоти вручну для цього ряду негайно замінюється висотою автоматичного встановлення. Проблема полягає лише в тому, що висота автоматичного встановлення часто неправильна.
devuxer

Я можу дублювати цю поведінку. Це саме так, як це працює для мене.
Пітер Норе

0

Іноді існує ядерний метод виправлення непорушних автопроблем.

Що я роблю, це скопіювати текст з кожної комірки та вставити дані в Блокнот, а потім видалити рядок. Потім я негайно копіюю та вставляю рядок, який є порожнім, але має таке ж форматування та хорошу поведінку, як і рядок, яку було видалено. (Ви повинні скопіювати і вставити весь ряд, використовуючи кнопки лівого рядка.)

Після цього потрібно повернутися назад і вставити текст із блокнота в кожну клітинку. (Використовуйте F2або іншим чином активуйте режим редагування кожної комірки перед тим, як вставляти текст.) Це біль, тому це в крайньому випадку, особливо для гіномерно широких робочих таблиць.

Іноді це єдине рішення, оскільки проблема полягає в самій програмі.


1
скопіюйте текст з кожної комірки - це, здається, вимагає стільки ж роботи, скільки і ручне форматування.
Дмитро Григор’єв

0

Я не ретельно перевіряв це, але це працює на мене. По суті, він автоматично регулює всі аркуші, потім повернеться назад і встановить ширину стовпця на початкову ширину, якщо вона не буде подовжена автоматичним регулюванням. У мене було лише 10 стовпців і ніколи більше 1000 рядків, тому коригуйте код за потребою.

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

Як це вирішує помилку Autofitting? Ви автоматично підганяєте рядки, потім автоматично налаштовуєте стовпці, а потім перезаписуєте вихідні ширини стовпців. Чому він закінчується правильною висотою рядка? До речі, totalWidthбезробітний.
Ant_222

Це не повністю працює для мене, тому що ви відновлюєте ширину лише тих слів, які стали вужчими. Тому ваш алгоритм не зберігає ширину стовпців.
Ant_222

-1

Перефразовуючи Данка :

Я вирішив подібне питання:

  1. Вибір всієї таблиці.

  2. Двічі клацніть рядок на полі між двома рядками.

Зокрема, для вирішення вашої проблеми цього додаткового рядка, я вважаю, що там є символ. Це може бути не видимий персонаж, але там напевно щось є.


3
Ваші кроки не відрізняються від того, що я вже намагався (подвійне клацання між рядками - це лише ярлик для "Автоматична висота рядка"). Щодо вашої теорії про те, що є зайвий персонаж, ви, можливо, маєте рацію, але я, звичайно, не набрав такого, і я не знав би, як його позбутися. Запрошую вас спробувати ввести в Excel точний текст, який я маю на своїй ілюстрації, і побачити, чи отримаєте ви однакові результати.
devuxer

1
На моєму немає жодного персонажа.
Raystafarian

-1

Я не знайшов часу, щоб прочитати інші коментарі. Чому рядок внизу першого блоку, а не у другому блоці?

Це тому, що текст закінчується занадто близько до правого краю клітинки. Якщо ви відрегулюєте стовпець трохи ширшим та двічі клацніть між рядками, він буде відповідно змінити розмір.


4
Я не сумніваюся, ви правильні, але тоді це вже не "авто", це керівництво.
devuxer

-1

Я теж пережив цю крихітну, але надзвичайно відволікаючу помилку протягом багатьох років. У мене немає ніякої роботи, окрім того, як обмацувати ширину рядків для комірки з більшою кількістю тексту, і врешті-решт програма відмовиться та відобразить текст належним чином.


обшивання шириною рядків не є відтворюваним рішенням.
Дмитро Григор’єв

-1

Є просте рішення:

1) Виберіть усі рядки, які потрібно автоматично відформатувати (якщо це великий блок, натисніть на перший, а потім натисніть Shift + End і Shift + Down)

2) Клацніть правою кнопкою миші на виділенні, Форматування комірок, вкладка Вирівнювання, зніміть прапорці Перегорнути текст.

Сподіваюся, це допомагає;)


1
Якщо зняти прапорець Wrap text, більше немає сенсу автоматично регулювати висоту рядка, оскільки всі рядки будуть однакового розміру.
Дмитро Григор’єв

Мене вже довгі роки турбує ця проблема. Змінення тексту для обгортання для проблемного рядка відновило функцію автозавантаження.
Мітч

-1

У мене є Excel 2010. Я виявив, що ця проблема трапилася зі мною, коли налаштування масштабування не було на 100%. Поки я перебуваю на 100%, я не отримую відрізаний текст за допомогою функції автоматичного підключення для стовпців і рядків


3
У прикладі, який я використовував для свого запитання, я весь час був у масштабі = 100%. Проблема виникла незалежно.
devuxer

-1

Моя гіпотеза полягає в тому, що Excel зав'язується, коли йому потрібно простягати занадто багато рядків. У мене був подібний досвід до вищевказаного. Це виглядає як є додатковий NL / CR / LF в кінці , але я знаю , що це не так . Якщо я будую комірку за деякими символами за один раз, вона автоматично формує ОК, поки не буде досягнуто певного розміру, то він ставить у додатковий рядок. (Подібна поведінка у зворотному випадку трапляється, якщо ви починаєте, видаляючи деякі символи.) Це відбувається в різний час із різними осередками.

Бампер!

Отже, якщо ви можете збільшити ширину комірок, ви, ймовірно, можете уникнути проблеми. Якщо ви не можете (як у моєму випадку), ви зупинилися на ручному форматуванні. Як я вже сказав: "Баммер!"


-1

Насправді там є зайвий персонаж. Це прихований символ НЧ, який знаходиться в кінці кожного поля. Коли текст має правильний розмір, додатковий рядок може містити символ LF. Зміна розміру ширини стовпця, як запропонували інші люди, вирішить проблему цієї комірки, але якщо у вашій електронній таблиці є велика кількість різних розмірів у цьому ж стовпці, можливо, виправлення цієї комірки спричинить проблему в іншій комірці. . Я навчився жити з цим більшу частину часу.


У кінці кожного поля, звичайно, немає прихованого символу НЧ , якщо, звичайно, ОП не поставив його туди за допомогою Alt + Enter. Питання справді стосується випадку, коли немає символу нового рядка, але Excel все ще не в змозі правильно вирівняти комірки.
Дмитро Григор’єв

-2

Що працювало для мене (Excel 2010), було видалити сто або більше невикористаних стовпців праворуч від моїх даних. Я можу лише здогадуватися, що щось там спричинило неправильну поведінку висоти рядка.


4
Я бачу, як це могло б допомогти, але це не має ніякого значення для тестового випадку, показаного в моєму запитанні.
devuxer

-2

виберіть усі клітинки та натисніть на рядок, який розділяє рядки двічі ... це автоматично зробить.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.