Как сделать так, чтобы функция Excel «Автоматическая подгонка высоты строки» действительно автоматически соответствовала высоте строки?

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

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

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

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

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

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


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

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

Voila!


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

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

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

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


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

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

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

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


Я просто написал небольшой макрос для этой цели. Я назначил ему сочетание клавиш (Ctrl-Shift-J), и он работает для меня как шарм.

  Sub ArrangeTable () 'устанавливает правильную ширину столбца и высоту строки для  текущий регион с Selection.CurrentRegion .Columns.ColumnWidth = 200 .Columns.EntireColumn.AutoFit .Rows.EntireRow.AutoFit End WithEnd Sub  

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

  • создайте модуль в новой пустой книге и вставьте код,
  • назначьте ему нужную комбинацию клавиш ,
  • затем Сохранить как , надстройка в папку % appdata% Microsoft Excel XLSTART
    Таким образом, он будет невидимо загружаться каждый раз при запуске Excel.

Я просто написал для этой цели небольшой макрос. Я назначил ему сочетание клавиш (Ctrl-Shift-J), и он работает для меня как шарм.

  Sub ArrangeTable () 'устанавливает правильную ширину столбца и высоту строки для  текущий регион с Selection.CurrentRegion .Columns.ColumnWidth = 200 .Columns.EntireColumn.AutoFit .Rows.EntireRow.AutoFit End WithEnd Sub  

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

  • создайте модуль в новой пустой книге и вставьте код,
  • назначьте ему нужную комбинацию клавиш ,
  • затем Сохранить как , надстройка в папку % appdata% Microsoft Excel XLSTART
    Таким образом, он будет невидимо загружаться каждый раз при запуске Excel.

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


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


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

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


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

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


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

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

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

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


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

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

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

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


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

  Sub ResizeCells () Dim sheetCounter As Integer Dim rowCounter As Integer Dim colCounter As Integer Dim totalWidth  Как Double Dim oldColWidths (от 1 до 10) Как Double For sheetCounter = 1 To ThisWorkbook.Sheets.Count ActiveWorkbook.Worksheets (sheetCounter) .Select totalWidth = 0 'Расширить столбцы до 200 Для colCounter = от 1 до 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  "" Или Cells (rowCounter, 3) .Value  "" Then Rows (rowCounter & ":" & rowCounter) .EntireRow.AutoFit End If Next 'выполните автоподбор для colCounter = от 1 до 10 ячеек  (1, colCounter) .EntireColumn.AutoFit Next 'сбрасывает исходные значения, если текущая ширина меньше исходной.  Для colCounter = от 1 до 10 If Cells (1, colCounter) .ColumnWidth  


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

  Sub ResizeCells () Dim sheetCounter As Integer Dim rowCounter As Integer Dim colCounter As Integer Dim totalWidth  Как Double Dim oldColWidths (от 1 до 10) Как Double For sheetCounter = 1 To ThisWorkbook.Sheets.Count ActiveWorkbook.Worksheets (sheetCounter) .Select totalWidth = 0 'Расширить столбцы до 200 Для colCounter = от 1 до 10 oldColWidths (colCounter) =  Cells (1, colCounter) .ColumnWidth totalWidth = totalWidth + oldColWidths (colCounter) Cells (1, colCounter). ColumnWidth = 200 Далее Для rowCounter = от 4 до 1000 Если Cells (rowCounter, 1) .Value  "" Или Cells (rowCounter, 2) .Value  "" Или Cells (rowCounter, 3) .Value  "" Тогда  Rows (rowCounter & ":" & rowCounter) .EntireRow.AutoFit End If Next 'do autofit For colCounter = 1 To 10 Cells (1, colCounter) .EntireColumn.AutoFit Next' сбрасывает исходные значения, если текущая ширина меньше исходной  ширина.  Для colCounter = от 1 до 10 If Cells (1, colCounter) .ColumnWidth  

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

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

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

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

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


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

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

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

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

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


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

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


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

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


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


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


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

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

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

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


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

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

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

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


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


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


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

Баммер!

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


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

Облом!

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


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


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


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


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


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


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

Оцените статью
techsly.ru
Добавить комментарий