84

Я помню, что для каждого поколения Excel (включая 2010, который я использую сейчас), функции "Авторазмер строки" в Excel иногда не позволяют автоматически изменять размер строки, когда ячейка содержит обернутый текст. Когда он работает должным образом, весь текст раскрывается, и под последней строкой текста больше нет свободного места. Когда это терпит неудачу, это добавляет дополнительное пространство ниже текста. Что еще хуже, то, что вы видите, не всегда то, что вы получаете, то есть текст, который хорошо отображался на экране, обрезается при печати. Вы также можете получить различные размеры в зависимости от того, увеличены вы или нет, или в реальном размере.

Простой тестовый пример:

Почему после текста в ячейке A1 есть пробел в одну строку, а в A2 нет?

(Для воспроизведения: установите ширину столбца A на 17,14 (125 пикселей), обтекание текстом и выравнивание по верху ячеек.)

(Я дважды проверил, что я применил Auto Fit Row Height к обоим строкам. Уровень масштабирования составляет 100%.)

Auto Fit не работает для первого ряда, успешно для второго

Есть ли какое-нибудь известное средство для этого, не прибегая к ручной настройке высоты строк (что не практично для нескольких строк)?

16 ответов16

99

Метод, который я только что нашел (немного расширив предыдущий пост):

  • Выберите весь лист.
  • Изменить размер столбца немного шире (поскольку выделен весь лист, все столбцы станут шире)
  • Дважды щелкните разделитель строк - высота строки будет установлена автоматически
  • Дважды щелкните разделитель столбцов - ширина столбцов будет установлена автоматически

Вуаля!

13

Excel WYSIWYG не самый лучший. На вашей картине «кот». едва пробирается в 5-ю строчку. Если вы уменьшите процент увеличения до значения менее 100% (например, 99%), тогда «cat.» теперь перенесено на 6 строку. Я думаю, что Excel пытается автоматически установить таким образом, чтобы почти всегда было видно все, независимо от уровня масштабирования.

Это не единственная проблема, которую вы будете иметь с AutoFit. Кроме того, способ печати обернутой словом ячейки не всегда будет соответствовать тому, что вы видите на экране. Возьмите свой пример и измените шрифт на Курьер, оставив размер на 11.

Изменен шрифт на Курьер

Как вы можете видеть, ячейка A1 имеет 1,5 дополнительных строки. Теперь посмотрите на предварительный просмотр, «кот». полностью скрыт

предварительный просмотр того же файла

По моему опыту, Excel имеет эту проблему с некоторыми шрифтами и размерами шрифтов больше, чем другие. Курьер хуже чем Курьер Нью, размер 11 обычно хуже чем 10 или 12. (Почему они выбрали размер 11 в качестве нового по умолчанию, я понятия не имею.)

2

Я просто написал небольшой макрос для этой цели. Я назначил ему комбинацию клавиш (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.
0

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

0

Иногда есть ядерный метод, чтобы решить неправильно работающие автопроблемы.

Я копирую текст из каждой ячейки и вставляю данные в Блокнот, затем удаляю строку. Затем я немедленно копирую и вставляю строку, которая является пустой, но имеет такое же форматирование и хорошее поведение, как и строка, которая была удалена. (Вы должны скопировать и вставить всю строку, используя кнопки левой строки.)

Как только это будет сделано, вы должны вернуться и вставить текст из блокнота в каждую ячейку. (Используйте клавишу F2 или иным образом активируйте режим редактирования каждой ячейки перед вставкой текста.) Это боль, так что это последнее средство, особенно для жирообразно широких листов.

Иногда это единственное решение, так как проблема находится в самой программе.

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
0

В этой статье есть статья в kb, которая "предлагает" (это неприемлемо редко, в классическом стиле Microsoft), что, если вы когда-либо установите высоту строки, автоматическое подгонка по высоте навсегда исчезнет для этой строки этого листа. Строки, высоты которых вы не трогали, все же подойдут.

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

0

В некоторых случаях проблема дополнительного пространства в некоторых строках после вызова "Высота строки автозаполнения" может заключаться в том, что скрытый столбец содержит текст в этих строках.

0

У меня Excel 2010. Я обнаружил, что эта проблема произошла со мной, когда моя настройка масштаба не была на 100%. Пока я на 100%, я не получаю обрезанный текст с AutoFit для столбцов и строк

0

Есть простое решение:

1) Выберите все строки, которые вы хотите автоформатировать (если это большой блок, нажмите на первую, а затем нажмите Shift+End и Shift+Down)

2) Щелкните правой кнопкой мыши выделенную область, «Формат ячеек», вкладку «Выравнивание», снимите флажок «Обтекание текстом».

Надеюсь это поможет ;)

-1

На самом деле там есть дополнительный персонаж. Это скрытый символ НЧ, который находится в конце каждого поля. Когда текст имеет правильный размер, появляется дополнительная строка для удержания символа LF. Изменение ширины столбца, как предлагали другие, решит проблему этой ячейки, но если в вашей электронной таблице много значений разных размеров в этом же столбце, возможно, что исправление этой ячейки вызовет проблему в другой ячейке столбца. , Я научился жить с этим большую часть времени.

-1

Перефразируя Дунк:

Я решил похожую проблему:

  1. Выбор всей таблицы.

  2. Дважды щелкните по строке на полях между двумя строками.

В частности, чтобы решить вашу проблему с этой дополнительной строкой, я бы предположил, что там есть персонаж. Это может быть не видимый персонаж, но там определенно что-то есть.

-1

Моя гипотеза заключается в том, что Excel завязывает узлы, когда ему приходится расширять слишком много строк. У меня был опыт, аналогичный описанному выше. Похоже, в конце есть дополнительный NL/CR/LF, но я знаю, что нет. Если я строю ячейку по нескольким символам за раз, она автоматически форматирует ОК, пока не будет достигнут определенный размер, а затем вставляет дополнительную строку. (Подобное поведение в обратном случае происходит, если вы начинаете с удаления некоторых символов.) Это происходит в разное время с разными клетками.

Вот досада!

Так что если вы можете увеличить ширину ячейки, вы, вероятно, можете избежать этой проблемы. Если вы не можете (как в моем случае), вы застряли с ручным форматированием. Как я уже сказал: "Облом!"

-1

выделите все ячейки и нажмите на строку, которая разделяет строки дважды ... это будет сделано автоматически.

-1

Я не нашел времени, чтобы прочитать другие комментарии. Почему линия внизу первого блока, а не во втором?

Это потому, что текст заканчивается слишком близко к правому краю ячейки. Если вы отрегулируете столбец, чтобы он стал немного шире и дважды щелкнули между строками, он соответственно изменит свой размер.

-2

Для меня (Excel 2010) сработало удаление около сотни неиспользуемых столбцов справа от моих данных. Я могу только догадываться, что там было что-то, что приводило к неправильной работе высоты строки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .