Как избежать слияния ячеек по вертикали в Excel? - PullRequest
4 голосов
/ 29 марта 2012

Я устал от слитых клеток.Они просто не работают.

Поэтому я нашел способ избежать слияния ячеек по горизонтали, когда мне просто нужно, чтобы мой текст центрировался по нескольким столбцам.Это: Range("A1:C1").HorizontalAlignment = xlCenterAcrossSelection.

Работает как шарм.Это идеально.Это как раз то, что мне нужно.

Я о-о-наивно думал, что вы можете сделать то же самое по вертикали, чтобы центрировать текст по нескольким строкам.Что-то вроде: Range("A1:A3").VerticalAlignment = xlCenterAcrossSelection.

Но, увы, это не работает.

Я что-то здесь упускаю, или разработчики Excel действительно думают, что, хотя центрирование по столбцам - это обычное дело, центрирование по строкам является настолько глупой идеей, что никто никогда не сделает этого, так зачем вообще беспокоиться?1013 *

Ответы [ 3 ]

1 голос
/ 22 декабря 2013

Вы можете попробовать это:

Sub VerticalAlign()
ThisWorkbook.Sheets(1).Cells(Round((WorksheetFunction.CountA(Range("A1:A6")) + WorksheetFunction.CountBlank(Range("A1:A6"))) / 2, 0), "A") = "Your Value Here"
End Sub

Вам нужно будет изменить подсчитываемые диапазоны и столбец, на который он ссылается, но это должно сработать.Небольшое предупреждение: VBA НЕ округляется так же, как Excel.Это всегда должно быть в пределах одной цифры, хотя.Вы можете прочитать больше об этом здесь: http://support.microsoft.com/kb/194983

0 голосов
/ 06 ноября 2015

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

В моей ситуации мне нужно было отслеживать время отпуска сотрудников по линейному календарю, который можно было отсортировать по имени и ответственности.площадь.Раздел заголовка покрывал три строки, которые я хотел видеть, когда данные ниже были отфильтрованы.Строка 1 = годы (объединены по месяцам), строка 2 = месяцы (объединены по дням), строка 3 = дни.Ячейки A1: A3 объединены и помечены Имена (сотрудники), B1: B3 объединены и помечены AREA (обязанности), чтобы мы могли отслеживать время отпуска в электронной таблице календаря, чтобы убедиться, что в каждой области был охват (по крайней мере, один сотрудник, отвечающий за нее, был доступен).Недостатком этого метода было то, что блоки фильтров были связаны со строкой 1, поэтому строки 2 и 3 были скрыты при фильтрации имен.

Затем я попробовал код VBA из предыдущего поста, и он работал, но с максимальнойна размер шрифта, который будет соответствовать, если слишком большой, он будет обрезан.С эстетической точки зрения это выглядело плохо.

Затем я поместил заголовки «Имена / области» в ячейки A3 и B3 без слияния и установил фильтры в третьей строке.Это отфильтровывало все, начиная с строки 4, не скрывая ничего над ним, но все равно выглядело плохо.

Теперь я нашел работу вокруг.Если у вас есть заголовки в верхней ячейке, где вы хотите объединить, и некоторые значения в нижней части.Установите фильтры в нижней части (нужно значение для установки фильтров).Затем объедините три ячейки, это работает.Итак, теперь мое имя A1: A3 и область B1: B3 объединены, но блоки фильтров находятся в нижней части разделов (выровнены по строке 3).

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

0 голосов
/ 04 января 2014

Мы используем формы текстовых полей над ячейками, чтобы сделать это.Если удерживать клавишу «Alt» во время рисования фигуры, углы будут привязываться к сетке Excel и перемещаться и изменять размер вместе с ячейками, поэтому это не займет намного больше времени, чем ввод в ячейки.

...