именованный диапазон с использованием оператора if с формулой массива для зависимого раскрывающегося списка - PullRequest
0 голосов
/ 28 августа 2018

Ошеломленный после поиска немного ...

У меня есть таблица с такими элементами:

   A              B                  C
+------+----------------------+--------------+
| Code |         Desc         |     Type     | 1
+------+----------------------+--------------+
|    1 | Main item            | Activity     | 2
|  1.1 | Sub item             | Sub-activity | 3
|  1.2 | Another sub item     | Sub-activity | 4
|    2 | Another main item    | Activity     | 5
|  2.1 | Yet another sub item | Sub-activity | 6
+------+----------------------+--------------+

Я хочу создать раскрывающийся список на основе активности. Я могу сделать это в типичной ячейке (с помощью Ctrl + Shift + Enter для формулы массива):

={if(c2:c6="Activity",a2:a6,"")}

Но я не могу понять, как правильно поместить эту формулу в именованный диапазон. Когда я нажимаю Ctrl + Shift + Enter, фигурные скобки не появляются. Когда он без скобок, он тоже не работает (он показывает значение как {...}).

Есть ли способ заставить эту работу?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

В конце концов, это было невозможно через именованный диапазон; Я закончил тем, что выполнил вариант зависимых выпадающих меню со смещениями, а также двумя пивотами, на основе страницы блога из комментария Даррена выше, а также этой ссылки . Может быть, излишне, но, по крайней мере, я знаю, как я к этому добился.

Настройка первого раскрывающегося источника данных и проверка данных для раскрывающегося списка

  1. Для первого списка я создал сводную таблицу из раскрывающегося источника данных со строкой столбца «Тип» и значениями счетчика «Тип» (значения не так уж важны, но я нашел, что это полезно просто знать, какие элементы следует ожидать для последующих зависимых элементов). Этот свод находится в стандартном расположении поворота по умолчанию на новом листе, где строка заголовка начинается на A3. Использование сводки также сортирует ее по умолчанию в алфавитном порядке (что я хотел). Поворот всех итоговых столбцов.

  2. Затем я создал именованный диапазон ("costCategory") со следующей формулой:

    =OFFSET('PivotSheet'!$A$4,0,0,COUNTA('PivotSheet'!$A$4:$A$100),1)

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

  3. Я создал еще один именованный диапазон ("emptyList") со следующей формулой:

    ={""}

    Чтобы я мог также заблокировать первый раскрывающийся список, если выбран второй, зависимый (для предотвращения странных проблем с несоответствием данных).

  4. Для строк таблицы, которые нуждались в раскрывающихся списках, я включил проверку данных для списка по следующей формуле:

    =IF(ISBLANK($B3),costCategory,emptyList)

    , где $ B3 - второе зависимое расположение раскрывающегося списка.

Настройка второго, зависимого раскрывающегося источника данных и проверка данных 5. Я создал еще одну сводную точку из того же источника данных со строками «Тип» и «Desc» и значениями счетчика «Тип» (опять же, значения не имеют большого значения). Макет сводки был задан как табличный, с повторяющимися надписями, без итогов или промежуточных итогов. Я поставил этот круг рядом с другим, первая строка заголовка начинается с E3. Это также альфа-сортировки.

  1. Я вставил вспомогательные столбцы, чтобы определить, где начинается список для конкретного родителя зависимого раскрывающегося списка, и количество строк в этом списке. Он использует тот же подход произвольных длинных диапазонов, что и в первом раскрывающемся списке - просто поместите количество строк, которые вряд ли будут превышены в сводной области. В столбце C для получения первой строки, где начинаются зависимые данные, я поместил эту формулу:

    =ROW(INDEX('PivotSheet'!$F$4:$F$200,MATCH($A3,'PivotSheet'!$E$4:$E$200,0)))

    В столбце D для получения количества столбцов, в которых есть зависимые данные, я поместил эту формулу:

    =(LOOKUP(2,1/('PivotSheet'!$E$4:$E$200=$A3),ROW('PivotSheet'!$F$4:$F$200))-ROW(INDEX('PivotSheet'!$F$4:$F$200,MATCH($A3,'PivotSheet'!$E$4:$E$200,0))))+1

  2. Наконец, в столбце с зависимым раскрывающимся списком (столбец B) я использовал следующее правило проверки данных:

    =OFFSET('PivotSheet'!$F$1,$C3-1,0,$D3,1)

    Который в основном использует диапазон, найденный в вспомогательных столбцах, для создания выпадающего списка.

Когда эти формулы расширяются, они увеличиваются (от A3 до A4, от B3 до B4 и т. Д.), Так что все они продолжают работать, даже когда вы добавляете строки в таблицу списков объектов.

0 голосов
/ 29 августа 2018

Создайте вспомогательный столбец в столбце D и напишите простую формулу

= ЕСЛИ (С2 = "активность", А2 "")

Если у вас есть столбец D, вы можете создать список из столбца D, игнорируя пустые ячейки, которые вам нужны.

P.S. Если вас не интересуют пустые ячейки, используйте формулу в столбце E2 и перетащите ее ниже, чтобы получить последовательные значения, которые вы хотите видеть в своем списке.

= ЕСЛИОШИБКА (МАЛЫЙ ($ D $ 2: $ D $ 6, СТРОКА () - 1), "")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...