Страницы: 1
RSS
Динамическое наименование заголовка умной таблицы
 
Всем доброго дня!

Подскажите, пожалуйста, есть ли возможность название заголовка умной таблицы отослать на определенную ячейку? В приложенном примере есть умная таблица, и есть необходимость дать название заголовку таблицы значением из ячейки E2.
Если ссылаться напрямую (=Е2), то просто выводит константу 0.

Спасибо!
 
Боюсь, что формулой - нет. Можно либо макросом, либо при помощи Power Query.
Вот горшок пустой, он предмет простой...
 
PooHkrd, а можете подробней рассказать, как это возможно сделать макросом? Я в макросах совсем новичок, но попробую понять. Спасибо!
 
Здравствуйте
Макросом можно так:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Columns.Count > 1 Or Target.Rows.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("E2")) Is Nothing Then
        Range("B2").ListObject.HeaderRowRange.Cells(1) = Range("E2")
    End If
End Sub

Макрос записан в модуле листа, на котором расположена "умная" таблица. Принцип работы: если меняем значение ячейки на листе - идет проверка - не ячейка ли это Е2 меняется?
Если да, то первой ячейке в диапазоне заголовков умной таблицы присваивается значение, равное значению ячейки Е2.
Ну а если нет - значит нет. :)
Изменено: Пытливый - 12.03.2019 15:36:52
Кому решение нужно - тот пример и рисует.
 
Пытливый, спасибо за вариант! Я сейчас попробовал вставить его в свой рабочий лист и возникли некоторые трудности... Во-первых, исходные данные для заголовков таблиц у меня находятся на другом листе. Попробовал в Вашем коде добавить наименование листа, ничего не получилось :( (Worksheet и Change сохранил как у Вас):
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Columns.Count > 1 Or Target.Rows.Count > 1 Then Exit Sub
    If Not Intersect(Target, Лист4.Range("C11")) Is Nothing Then
        Range("B2").ListObject.HeaderRowRange.Cells(1) = Лист4.Range("C11")
    End If
End Sub
Дальше попытался подтянуть формулой значения на рабочий лист (где находятся таблицы) - не работает, потому получается так, что я изменяю ячейки не физически, а формулой (как я понял...). Поэтому ещё одна большая просьба:
1. Как сделать такую же формулу со ссылкой на другой лист
2. Либо как сделать от изменения ячейки через формулу (ссылкой на другую)
Изменено: BUCK - 12.03.2019 15:59:23
 
Блин, ну такое-то гуглится за минуту. Лично я в ВБА вообще ни в зуб ногой.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Columns.Count > 1 Or Target.Rows.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("E2")) Is Nothing Then
        Worksheets("Лист2").Range("B2").ListObject.HeaderRowRange.Cells(1) = Range("E2")
    End If
End Sub

Тут принципиально оставить макрос в модуле того листа, в котором идет перехват события, а менять уже можно заголовок на другом листе явно указав его название.
Изменено: PooHkrd - 12.03.2019 16:15:46
Вот горшок пустой, он предмет простой...
Страницы: 1
Наверх