Как сделать функцию Excel «Auto Fit Row Height» действительно автоматической настройкой высоты строки?

Для каждого поколения Excel, которое я помню (включая 2010 год, который я использую сейчас), функции «Auto Size Row» в Excel иногда не могут автоматически определять размер строки, когда ячейка содержит завернутый текст. Когда он работает правильно, весь текст открывается, и нет дополнительного пространства под последней строкой текста. Когда он терпит неудачу, он добавляет дополнительное пространство под текст. Хуже того, что вы видите, это не всегда то, что вы получаете, т. Е. Текст, который появился на экране, отключается, когда он печатается. Вы также получаете различный размер в зависимости от того, увеличены ли вы в / из или по фактическому размеру.

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

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

(Чтобы воспроизвести: установите ширину столбца A в 17.14 (125 пикселей), оберните текст и верхнюю часть выравнивания ячеек.)

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

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

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

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

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

Вуаля!

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

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

Изменен шрифт для Courier

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

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

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

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

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

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

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

Хотя вы можете сбросить ширину столбцов с настройкой «стандартной ширины» в 2003 году (madman-designed 2007: change to «default width»), но они забыли (снова) (и снова), чтобы поместить это для строк. Таким образом, постоянство кажется неизбежным. Это означает, что если у вас есть высота по умолчанию 15, и вы создаете лист и устанавливаете все высоты до 12, вы просто теряете автоматическое автоподключение.

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

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

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

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

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

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

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

Я решил аналогичную проблему:

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

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

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

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

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

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

Существует простое решение:

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

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

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

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

Вот досада!

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

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

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

  • Excel SUMIFS на основе двух критериев
  • Как я могу записать переход от 0 до 1 в столбце Excel?
  • В любом случае, если Excel 2010 обрабатывает цитируемое значение «08540» как текст без номера при открытии CSV
  • Диагностика медленных таблиц Excel?
  • Создание диаграммы ГАНТ (временная шкала) от времени начала и продолжительности
  • Excel: изменение и обновление будущего значения на основе прошлого появления и поиска в таблице
  • Объединение SUMIF () и SUBTOTAL () для динамического итога
  • Открытие книги Excel 2003 в Excel 2010 32-бит вызывает ложную циркулярную ссылку и сбои
  • Excel 2010 Pivot Formatting - не может отступать и обертывать поля?
  • Показать вкладку листа Excel в> = 2 строки
  • Возвращайте значение, учитывая, что число находится в определенном диапазоне
  • Давайте будем гением компьютера.