Можно ли отображать значение на основе наличия границы ячейки?

Мы смотрим на импорт некоторых данных. Существует очень большой сложный лист, в котором некоторые элементы сгруппированы с использованием границ вокруг ячеек в одном столбце. Единственным признаком того, что элементы сгруппированы, является тот факт, что группа окружена рамкой. Разгруппированные элементы не имеют левой и правой границы в ячейке (могут иметь верхнюю и нижнюю границу, поскольку элементы выше и ниже могут быть сгруппированы). В качестве начального упражнения мы хотим добавить столбец, который отображает true, если элемент сгруппирован. Поэтому, если есть граница, отобразите значение, подобное единице. Кто-нибудь знает, возможно ли это?


person GraemeMiller    schedule 11.11.2014    source источник
comment
Да. Это возможно, но не со встроенной формулой. Попробуйте VBA, и мы поможем, когда вы застрянете.   -  person Mr. Mascaro    schedule 11.11.2014
comment
Круто - просто не знал Excel достаточно, чтобы знать, если я что-то упустил. Пойду и посмотрю, смогу ли я сделать это в VBA   -  person GraemeMiller    schedule 11.11.2014


Ответы (1)


Используйте эту пользовательскую функцию VBA:

Public Function GetBorder(ByVal Rng As Range, Idx As Integer) As Boolean
    GetBorder = Rng.Borders(Idx).LineStyle <> xlNone
End Function

Он принимает два аргумента: ячейку и индекс границы (7=слева, 8=снизу, 9=сверху, 10=справа). Возвращает TRUE или FALSE. Теперь, если вы хотите получить информацию о нижней границе ячейки A1, вы должны:

=GetBorder(A1,8)
person ttaaoossuuuu    schedule 11.11.2014
comment
Любая идея, почему, если я помещу границу в ячейку, результат не обновится, не заходя в ячейку формулы и не нажимая клавишу возврата. Есть ли способ сделать его динамичным - мне это действительно не нужно - просто пытаюсь улучшить свое понимание - person GraemeMiller; 11.11.2014
comment
Думаю, нет: изменение границы ячейки не является изменчивым событием. Вам нужно будет нажать F9 для пересчета. - person ttaaoossuuuu; 11.11.2014