2015-06-12 2 views
2

Я пытаюсь создать динамическую таблицу - я пробовал сводную таблицу, но не могу заставить ее работать. Поэтому я подумал, что, возможно, это может быть сделано с помощью IF-заявления, но это не сработало для меня.Как создать динамическую таблицу в Excel?

В принципе, у меня есть 2 таблицы, 1 таблица, содержащая информацию (таблица источника данных) и 1 таблица, которая должна быть динамической в ​​соответствии с данными в первой таблице.

Table 1

Так что если я изменить данные в E-колонки, фрукты таблица (изображение ниже) должна быть обновлена ​​соответствующим образом.

Table 2

Так что, если я пишу 2 вместо 1 в счете яблок, то он должен создать 2 яблоки под «Fruit» -column». Данные в остальных столбцах будет рассчитываться с формулой/. неподвижные данные - так что не важно
Я открыт для любых решений, формулы, сводные таблицы, VBA и т.д.

Хороших выходных у меня есть и Excel 2010 и 2013.

ответ

2

If. вы хотите повторить некоторый текст несколько раз, когда вы можете нас это несколько сложная формула для этого. Он полагается на то, что не существует повторяющихся записей в таблице Fruits и нет записей с 0 счетчиком.

Изображение диапазонов и результаты

ranges and results

Формула участие включает в себя стартер клетку E2 и повторяющуюся запись E3 и копируются вниз. Это фактически нормальные формулы, не требуется массив. Обратите внимание, что я создал Table для данных, которые позволяют мне использовать именованные поля, чтобы получить весь столбец.

E2 = INDEX(Table1[Fruits],1) 
E3 = IF(
     INDEX(Table1[Count],MATCH(E2,Table1[Fruits],0))>COUNTIF($E$2:E2,E2), 
     E2, 
     INDEX(Table1[Fruits],MATCH(E2,Table1[Fruits],0)+1)) 

Как это работает Эта формула опирается на проверку количества записей выше текущей и сравнение с требуемым счетом. Некоторые примечания:

  • Стартовая ячейка необходима для получения первого результата.
  • После первой ячейки он подсчитывает, как часто в общем списке отображается значение выше. Это сравнивается с желаемым счетом. Если оно меньше желаемого, оно будет повторять значение сверху. Если он больше, он перейдет к следующему элементу в списке. Здесь имеется двойная относительная/абсолютная ссылка для подсчета ячеек выше.
  • Поскольку он переходит к следующему элементу в списке, не ставьте 0 для подсчета или он будет включен один раз.

Вы можете скопировать это на столько же, сколько хотите. Он будет #REF!, когда закончится информация. Вы можете обернуть в IFERROR(..., ""), чтобы сделать этот дисплей симпатичным.

Если правило не-0 слишком много, его можно, вероятно, удалить с небольшим усилием. Если есть дубликаты, с ними будет сложнее справиться.

+0

Вы, сэр, гений! Огромное спасибо. Работаю как ЧАРМ! :-) Думаю, я могу просто удалить строку из таблицы данных, если она равна 0, поэтому она не будет отражать. Я собирался кое-что закодировать в ChangeEvents в VBA, но это кажется намного проще. Хороших выходных. – Niclas

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