GIG_ant Пользователь Сообщений: 3102 |
Добрый день, уважаемые ! |
vikttur Пользователь Сообщений: 47199 |
Попробуйте не автоподбор, а ширину строки (не более 409). |
GIG_ant Пользователь Сообщений: 3102 |
{quote}{login=vikttur}{date=01.02.2011 03:37}{thema=}{post}Попробуйте не автоподбор, а ширину строки (не более 409).{/post}{/quote} не очень понял, можно поподробней плз |
vikttur Пользователь Сообщений: 47199 |
Автоподбор же как-то хотели сделать? |
принцип такой: Columns(iLastColumn).ColumnWidth = mrg |
|
GIG_ant Пользователь Сообщений: 3102 |
{quote}{login=vikttur}{date=01.02.2011 03:47}{thema=}{post}Автоподбор же как-то хотели сделать? |
vikttur Пользователь Сообщений: 47199 |
Пожалейте зверька |
GIG_ant Пользователь Сообщений: 3102 |
То vikttur: Или у меня сегодня день неудачный, или я все равно не пойму каким макаром вы предлагаете подобрать нужную высоту строки. То Noname (который прислал макрос) : если возможно вкратце подскажите как мне этот макрос приделать под мой пример, а то я попробовал а он виснет (. |
vikttur Пользователь Сообщений: 47199 |
Я и не говорил подбирать. Предложил вариант (корявый, не спорю) — для всех выставить минимально возможную для отражения всего текста максимальной длины. |
или так: попробуйте изменить ячейку(добавить пробел, например) ps 88666 |
|
GIG_ant Пользователь Сообщений: 3102 |
{quote}{login=Казанский}{date=01.02.2011 04:02}{thema=}{post}Ключевое слово — автоБодбор А я как правильный искал автоПодбор! Всем остальным спасибо за участие. |
vikttur Пользователь Сообщений: 47199 |
Ух ты! Это вообще красота! |
даже автоподбор не любит Alt+Enter |
|
vikttur Пользователь Сообщений: 47199 |
{quote}{login=}{date=01.02.2011 04:10}{thema=}{post}или так: попробуйте изменить ячейку(добавить пробел, например){/post}{/quote} |
nerv Пользователь Сообщений: 3071 |
Как установить: Скачать, распаковать архив. Открыть Excel, в меню «Сервис», выбрать пункт Надстройки, нажать кнопку обзор, указать путь к файлу. Закрыть Excel. После правильной установки надстройки на панели инструментов, должна появиться кнопка «Автоподбор высоты строк». Как пользоваться: так же, как и обычным подбором высоты строк. Цель надстройки: забыть о том, что существует какая-то разница между подбором строк с объединенными или обычными ячейками. Тем, кто будет пользоваться: в случае обнаружения ошибки, просьба написать по адресу: nerv-net@yandex.ru. Так же принимаются замечания и предложения : ) |
VovaK Пользователь Сообщений: 1716 |
|
nerv Пользователь Сообщений: 3071 |
Большое спасибо за пример! Такой случай я не рассматривал, хотя в голове уже вертится приблизительный алгоритм его решения. Посмотрим, удастся ли его воплотить : ) По вашему примеру: вариант выложенный мной (на данный момент) будет работать если скрыть любую/любые строки , не относящиеся к верхней левой ячейке диапазона объединенной ячейки (т.е. H9). |
VovaK Пользователь Сообщений: 1716 |
Nerv, Не в обиду. Вы выложили недоработанную надстройку и закрыли ее от просмотра. Цель? Я не осуждаю, но на этом форуме мы у друг друга учимся, а так — во что форум превратится? Не спортивно. GiGant, посмотрите пожалуйста прилагаемый файл. Немножко попробовал варианты, в общем случае не работает только, если в строке есть индивидуальный формат шрифта в тексте. В остальном повторяет стандартный. |
GIG_ant Пользователь Сообщений: 3102 |
{quote}{login=VovaK}{date=28.07.2011 01:03}{thema=}{post}Nerv, Спасибо за беспокойство. Дело в том что мне помогли предыдущие посты, при этом взял на заметку ваш вариант. Не пойму почему тема всплыла, см . дату первого поста )) |
nerv Пользователь Сообщений: 3071 |
to GIG_ant: «Не пойму почему тема всплыла» to VovaK: «Вы выложили недоработанную надстройку и закрыли ее от просмотра. Цель?» Постарался учесть замечания в примере от VovaK. |
> Автоподбор высоты. Версия 2.5 beta высота подбирается не совсем точно… http://excelvba.ru/XL_Files/Sample__30-07-2011__15-31-17.zip Но, полагаю, в общем случае автоподбор высоты таких ячеек — задача весьма нетривиальная, и алгоритм будет достаточно сложным. PS: Я тоже когда-то пытался сделать подобный макрос: http://excelvba.ru/code/AutoFitMergedCells |
|
nerv Пользователь Сообщений: 3071 |
Позвольте поблагодарить Вас за пример : ) Пытаясь идти по пути наименьшего сопротивления, могу предложить следующий вариант решения: собрать адреса с ячейками, в кот. объединены строки в массив и пройти по ним еще раз) На Вашем примере: На данный момент это все делается руками, но можно и автоматизировать : ) |
nerv Пользователь Сообщений: 3071 |
Применил немного другой алгоритм, в отличии от описанного выше. Попытался учесть замечания от EducatedFool. |
nerv Пользователь Сообщений: 3071 |
эм, ну как то так… Автоподбор высоты. Версия 2.7 |
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
nerv, это Вы с кем разговариваете?:-) Я сам — дурнее всякого примера! … |
nerv Пользователь Сообщений: 3071 |
KukLP, я все пытаюсь победить автоподбор. Пока ничья) |
Начальника Пользователь Сообщений: 1 |
макрос закрыл, но могу поделиться! |
nerv Пользователь Сообщений: 3071 |
|
гость Гость |
#30 05.08.2011 11:34:17 {quote}{login=nerv}{date=01.08.2011 09:22}{thema=}{post}KukLP, я все пытаюсь победить автоподбор. Пока ничья) |
Если текст содержится в объединенных ячейках, то автоподбор высоты строки не сработает.
В этой статье Вы НЕ найдете решение вот такой задачи: высота строки должна подбираться автоматически (без участия пользователя) в зависимости от длины текста в ячейке (текст возвращается формулой и его длина может меняться, поэтому нужно изменять высоту строки). Статья вообще не об этом: если ячейки объединены, то стандартный
автоподбор высоты по содержимому
не работает (это когда Вы кликаете между заголовками строк и высота строки изменяется, чтобы вместить все содержимое ячейки), поэтому используйте вместо объединения ячеек Формат ячеек
Выравнивание по центру выделения —
это не панацея, но в некоторых случаях подходящая замена.
Кто заинтересовался читаем дальше.
На рисунке снизу приведена типичная ситуация: в двух объединенных ячейках
А1
и
В1
содержится текстовая строка (объединены 2 ячейки в одной строке). Требуется быстро подобрать по содержанию высоту строки
1
(в ячейках включена опция
Переносить по словам
).
Предположим, что пользователь, желая использовать механизм автоподбора (см. статью
Автоподбор ширины столбца и высоты строки по содержимому ячеек
), два раза кликает на границу между первой и второй строки и получает, то что мы видим на рисунке ниже — высота строки не достаточна для полного отображения содержимого объединенных ячеек.
Т.к. автоподбор высоты строки в этом случае не работает, то обычно ограничиваются подбором высоты строки в ручную (на глазок). Это, конечно, не удобно.
Если хотите наслаждаться автоподбором высоты строки по содержимому, то имеется 2 подхода:
-
вместо объединения ячеек использовать формат ячейки
Выравнивание по центру выделения
; - оставить объединение ячеек, но использовать дополнительную ячейку.
Выравнивание по центру выделения
В некоторых случаях можно разместить данные в нескольких ячейках (без объединения ячеек) и продолжать пользоваться автоподбором высоты по содержимому. Для этого используйте опцию Формата ячеек
Выравнивание по центру выделения:
выделите нужные ячейки, откройте Формат ячеек (
CTRL
+
SHIFT
+
F
, вкладка
Выравнивание
), а в выпадающем списке
Выравнивание по горизонтали
установите
Выравнивание по центру выделения
.
Если длина текста больше области выделения, то смело можно использовать автоподбор по высоте строки. Теперь, когда мы избавились от объединенных ячеек, он сработает. Единственный минус — текст выравнивается посередине, иногда это выглядит неуместно.
СОВЕТ:
Ячейки чаще всего объединяют для выравнивания заголовка листа по середине страницы. Но, чтобы это сделать, вовсе нет необходимости объединять ячейки. Достаточно их просто выделить и установить опцию
Выравнивание по центру выделения
.
Дополнительная ячейка
Предположим, что имеется 2 объединенных ячейки
А4
(ширина 15,14) и
В4
(ширина 16,14). Узнать ширину можно нажав на правую границу заголовка столбца.
Пусть как и в предыдущем разделе, пользователь, желая использовать механизм автоподбора, два раза кликает на границу между четвертой и пятой строкой и получает, что высота строки равна схлопывается до минимального размера (отображается только 1 строка).
Теперь в ячейке
С4
введите формулу
=А4
, а ширину ячейки сделайте равной сумме ширины
А4
и
В4
, т.е. 15,14+16,14=31,28.
Затем опять дважды кликните на границу между четвертой и пятой строкой.
Самое удивительное, что столбец можно скрыть — автоподбор продолжит работать!
СОВЕТ
. Задать ширину столбца можно через меню Формат на вкладке
Главная
.
СОВЕТ
: Используйте объединение ячеек, находящихся в одной строке, взвесив все «за» и «против», т.к. объединение ячеек служит скорее для «наведения красоты на листе», а не для выполнения вычислений. Не будем забывать, что MS EXCEL все таки скорее создавался для выполнения вычислений и анализа данных, а не для подготовки презентаций. Хотя, конечно, таблицы тоже должны выглядеть профессионально. Эту дилемму каждый решает по своему, лично я стараюсь не объединять ячейки без крайней необходимости. А объединение ячеек, находящихся в одном столбце (т.е. объединение строк), следует вообще избегать, особенно в таблицах с данными, т.к. в некоторых случаях перестают корректно работать
фильтр
и
Сводная таблица
. Кроме того, перестает корректно работать сочетание клавиш
CTRL+D
(вставка значения из ячейки сверху).
Еще
: слово
Автоподбор
— это термин EXCEL (см. справку EXCEL), а не описание решения. В статье описано лишь стандартное средство EXCEL — Автоподбор высоты строки по содержимому ячейки. Изменять высоту строки в зависимости от значения ячейки можно лишь с помощью VBA, либо в ручную, в том числе с использованием Автоподбора (Автоподбор — это тоже в ручную, т.к. пользователь кликает между заголовками строк каждый раз, когда нужно поменять высоту).
Про поиск объединенных ячеек на листе рассказано в одноименной статье
Поиск объединенных ячеек
.
Автоподбор высоты объединенной ячейки с помощью кода VBA Excel, когда метод AutoFit не работает. Обработка ячеек по списку адресов из массива.
Автоподбор высоты ячейки
К сожалению, в объединенных ячейках метод VBA Excel AutoFit не работает. Но есть возможность подогнать ширину или высоту такой ячейки под длину текста с помощью макроса.
Здесь мы рассмотрим макрос для автоподбора высоты ячейки, объединенной с другими по горизонтали в одной строке, которые обычно используются в заголовках электронных таблиц Excel. Для объединенной ячейки должен быть задан перенос текста по словам: Формат ячеек >> Выравнивание >> переносить текст
.
Высота ячейки будет такой, чтобы уместились все строки, на которые будет разбит контент в зависимости от ширины объединенной ячейки.
Для решения задачи по автоподбору высоты необходимо с помощью кода VBA определить:
- Длину текста (количество символов) в объединенной ячейке.
- Ширину объединенной ячейки. Длина одного символа текста со шрифтом и его размером по умолчанию приблизительно соответствует длине символа, в котором измеряется ширина ячейки.
- Размер шрифта, чтобы рассчитать коэффициент, увеличивающий или уменьшающий высоту ячейки в зависимости от его (шрифта) размера.
Макрос VBA Excel для автоподбора высоты ячейки с учетом размера используемого шрифта:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Sub PodborVysoty() Dim myCell As Range, myLen As Integer, _ myWidth As Single, k As Single, n As Single With Selection ‘Задаем объединенной ячейке перенос текста .WrapText = True ‘Задаем объединенной ячейке такую высоту строки, ‘чтобы умещалась одна строка текста .RowHeight = ActiveCell.Font.Size * 1.3 End With myLen = Len(CStr(ActiveCell)) For Each myCell In Selection myWidth = myWidth + myCell.ColumnWidth Next n = 10 k = ActiveCell.Font.Size / n Selection.RowHeight = Selection.RowHeight * _ WorksheetFunction.RoundUp(myLen * k / myWidth, 0) End Sub |
Переменные:
- myCell — отдельная ячейка в объединенной;
- myLen — длина текста в активной ячейке;
- myWidth — ширина объединенной ячейки;
- k — коэффициент, вносящий поправку в зависимости от размера шрифта;
- n — размер шрифта по умолчанию.*
* Это не точное значение: у меня по умолчанию установлен шрифт Calibri размером 11, но точнее код работает с n = 10. Значение переменной n подбирается опытным путем, так как длина текста зависит от процентного соотношения широких и узких символов, если шрифт не моноширинный. Переменной n можно присваивать и дробные значения для более точного автоподбора высоты.
Максимальная высота строки — 409,5. Если расчетная высота объединенной ячейки окажется больше, будет сгенерирована ошибка.
Данный код VBA Excel работает с выделенной ячейкой. Вы можете задать список адресов объединенных ячеек и пройтись макросом по каждой из них.
Обработка списка ячеек
Укажите список объединенных ячеек в качестве аргументов функции Array. Для списка используйте адреса только первых ячеек из состава объединенных.
Sub ObkhodYacheyek1() Sub ObkhodYacheyek() Dim myCell() As Variant, myElem As Variant myCell = Array(«A1», «A3», «A5») For Each myElem In myCell Range(myElem).Select Call PodborVysoty Next End Sub |
Переменные:
- myCell — массив со списком адресов объединенных ячеек;
- myElem — используется как элемент массива myCell.
Макрос ObkhodYacheyek по адресам из списка обращается к каждой ячейке по очереди, выделяет ее и запускает код автоподбора высоты PodborVysoty.
Если выделить диапазон объединенных ячеек по одной, удерживая клавишу Ctrl, то запустить код автоподбора высоты можно с помощью следующего макроса:
Sub ObkhodYacheyek2() Dim myCell() As String, myElem As Variant myCell = Split(Selection.Address, «,») For Each myElem In myCell Range(myElem).Select Call PodborVysoty Next End Sub |
Автоподбор высоты строк в объединенных ячейках в excel 2016 |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Как настроить автоподбор высоты строки для объединенных ячеек?
Добрый день
Надеюсь на вашу помощь. Каким образом можно настроить автоподбор высоты строки для объединенной ячейки, данные в которую падают из соседнего листа? (скрины прилагаю)
Спасибо!
-
Вопрос заданболее двух лет назад
-
794 просмотра
Пригласить эксперта
Хороший вопрос.
На данный момент никак.
Пишите предложения по улучшению из меню Помощь. Будем надеяться, что нас таких много.
Нужно выделить строку (например А), ячейки которых нужно изменить (автоподбор высоты), затем нажать правую кнопку мышки и выбрать изменить размер строки, далее выбрать «Автоподбор размера»
-
Показать ещё
Загружается…
15 апр. 2023, в 04:50
7000 руб./за проект
15 апр. 2023, в 03:28
5000 руб./за проект
15 апр. 2023, в 02:02
12000 руб./за проект