2016-05-18 4 views
0

У меня есть две формулы, как показано ниже:Как изменить GETPIVOTDATA() динамически

=GETPIVOTDATA("Sum of Values",'Input Data'!$A$4,"State",Q42,"Route",$S$1,"STAT_COMB",$G$37,"SHA",$G$35) 
=GETPIVOTDATA("Sum of Values",'Input Data'!$A$4,"State",Q42,"Route",$S$1,"STAT_COMB",$G$37) 

Основное различие во второй формуле, я не рассматриваю параметр «SHA». Учесть это или нет, зависит от другого значения ячейки. Я могу написать условие if, чтобы выбрать формулу соответственно. Но проблема в том, у меня есть другая ситуация, как это:

=GETPIVOTDATA("Sum of Values",'Input Data'!$A$4,"Route",Q42,"STAT_COMB",$G$37) 

Здесь я не рассматриваю «государство» и параметр «SHA», который зависит от соответствующих различных клеток, следует ли рассматривать или нет.

Аналогично, каждая пара [Поле], [Пункт] Пара в формуле зависит от того, могут ли они включать их или нет.

Написание слишком много, если условия сделают формулу громоздкой. Итак, мне интересно, есть ли способ динамически опустить пары [Field], [Item] в формуле.

Я мог бы использовать INDIRECT внутри getpivotdata(), но INDIRECT выбирает только одно значение, но мне нужно пару значений для каждого параметра.

+0

Выделение двух столбцов для поля и элемента и позволяет пользователям выбирать необходимые поля из списка DropDown List, например, 10 строк данных. То же самое может быть закодировано из excel vba, и одно условие If() будет проверять наличие пустых ячеек, и то же самое будет повторяться для остальных циклов. – Sixthsense

+0

Почему вы не пытаетесь поместить условия в другую ячейку (сравнения), а затем косвенно коснуться этих сравнений для сводной таблицы? Или используйте AND (условие1, условие2), чтобы делать больше сравнений. – Matt

+0

@Pramod Вы просмотрели мой ответ? Если мой ответ не сработает - мне бы хотелось получить обратную связь, чтобы мы могли либо уточнить ответ, либо продолжить. –

ответ

1

Это лучшее, что я мог понять ... но это не обязательно очень ...

Проблема здесь в том, что вы не можете (к моему знанию и без VBA) динамического изменения, которые перегружены Функция GETPIVOTDATA, которую вы используете в ячейке. Поэтому нам нужно выбрать 1 функцию. В этом примере вот моя функция:

=GETPIVOTDATA("Sum of hello",INDIRECT(K2),M1,O1,M2,O2,M3,O3,M4,O4) 

Я выбрал перегрузку, которая указывает 4 пары [поле, элемент].

Теперь я настроил свой рабочий лист, как это ...

enter image description here

Вы видите - для этого примера, я только хочу использовать 2 [поле, пункт] пар - так что я просто копирую параметры для заполнения оставшихся двух пар в перегруженной функции. Excel все еще правильно вычисляет функцию GETPIVOTDATA, так как я действительно указал только две уникальные пары [поле, элемент].

Достаточно ли это, чтобы вы достигли своей цели?

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