Вот почему я никогда не использую сводные таблицы ... кажется, что они никогда не делают то, что мне нужно.
Предполагая, что вы можете вручную создать уникальный отдельный список для столбца строки и имени заголовка,или автоматически (см. уникальный отдельный список )
Вы можете просто использовать следующую формулу в таблице для поиска:
=INDEX($C$2:$C$5,SUMPRODUCT(($A$2:$A$5=$E2)*($B$2:$B$5=F$1)*ROW($C$2:$C$5))-ROW($C$1))
Где
Исходная таблица в формате A1: C5
Таблица результатов - имя столбца E1: E3
Заголовки (для вопросов) находятся в ячейках F1: G1
Если разбить его, это просто INDEX
поиск в таблице
=INDEX($C$2:$C$5,SOME_ROW)
Где SOME_ROW
определяется как
SUMPRODUCT(($A$2:$A$5=$E2)*($B$2:$B$5=F$1)*ROW($C$2:$C$5))
Сломая SUMPRODUCT
, мы просто создаем набор списков из 1 и 0 (или True / False) для критериев поиска.
Первый столбец, который должен соответствоватьName
определяется как ($A$2:$A$5=$E2)
Второй столбец, соответствующий Question
, определяется как ($B$2:$B$5=F$1)
Умножение двух списков вместе, когдаName = A
& Question =1
вы получаете
(A,B,A,B) * (1,1,2,2)
(1,0,1,0) * (1,1,0,0) = (1,0,0,0)
Третий список (с которым мы умножим полученный результат) из SUMPRODUCT
, этофактическая строка;это определяется ROW($C$2:$C$5)
, поэтому мы получаем:
(1,0,0,0) * (2,3,4,5) = (2,0,0,0)
Теперь мы SUM
PRODUCTS
результата:
2 + 0 + 0 + 0 = 2
Итак, фактический результат в Row 2
;Да!
... но у нас есть проблема;в функции INDEX
массив начинается со строки 2, поэтому, если мы укажем 2
для row number
, мы фактически получим значение из строки 3 из-за смещения начальной строки.
Здесь -ROW($C$1)
входит;исправить смещение строки.Он должен указывать на ячейку в строке заголовка.
Это гораздо проще, чем выглядит ...