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

  • Если (AND) комбинация производит «Вы ввели слишком много аргументов для этой функции», ошибка
  • Как я могу легко разбить CSV на два листа Excel с помощью PowerShell?
  • Условное форматирование Excel 2010: выборочное выделение дубликатов
  • IF с несколькими критериями и несколькими возможными результатами
  • Excel 2010 на экране с несколькими мониторами
  • Как экспортировать диаграмму в формате png в Excel 2010?
  • Excel: как навсегда применить условное форматирование ко всей электронной таблице?
  • Как разделить одну строку на несколько строк с Excel?
  • Открытие книги Excel 2003 в Excel 2010 32-бит вызывает ложную циркулярную ссылку и сбои
  • Сравнение счетов в Windows Excel 7 между двумя разными листами и объединение в один список
  • Excel - Как объединить строки из 2 таблиц на основе общего столбца?
  • Interesting Posts

    Рекурсивный вызов ConcurrentHashMap.computeIfAbsent () никогда не завершается. Ошибка или «функция»?

    Установите глобальные горячие клавиши с помощью C #

    Как создать обработчик событий для программно созданного объекта в VB.NET?

    Использование UDF в Excel для обновления рабочего листа

    javascript удалить атрибут «disabled» из html-входа

    Как переключить статус Caps Lock в удаленной системе Windows?

    Добавить текстовую метку в узел d3 в силовой макете

    Упорядочить значки рабочего стола в Windows по категориям или разделам

    Facebook OAuth «Домен этого URL-адреса не входит в домен приложения»

    Как переименовать папку проекта из Visual Studio?

    Файл APK Repackage для хранения настраиваемых активов – какой инструмент построения использовать?

    Java – проверьте, не является ли JTextField пустым или нет.

    Как измерить прирост производительности при дефрагментации?

    Как отключить обнаружение сети в Windows 7?

    Как проверить пустой массив в макросе vba

    Давайте будем гением компьютера.