2012-03-29 2 views
4

Я устал от слитых клеток. Они просто не работают.Как избежать смещения ячеек по вертикали в excel?

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

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

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

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

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

+0

Извините, но нет стандартного способа центрирования по вертикали. Как вы можете видеть, когда вы выбираете ячейку и открываете диалоговое окно «Формат ячейки». В пулемете вертикального выравнивания у вас нет возможности центрировать по вертикали. – JMax

+0

Да, я думал, что «стандартный» способ не будет доступен. Может быть, у кого-то есть более сложное обходное решение? – Bruder

+0

Помимо использования прямоугольной формы, которая бы лежала над «объединенными ячейками», я не вижу никакого способа Excel, я бы справился со стандартным слиянием и его недостатками – JMax

ответ

1

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

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

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

0

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

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

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

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

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

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

Смежные вопросы