2015-11-15 4 views
1

У меня есть следующий набор данных, из которого мне нужно количество различных значений в своде. Я пробовал несколько функций, таких как FREQUENCY, COUNTIFS и т. Д., Но я не мог этого сделать.Excel Pivot - количество различных значений в заданном диапазоне

Входной

Входные данные

enter image description here

Выход

Ожидаемый результат

enter image description here

ответ

0

Я думаю, что это неудобно, так как случай значения данных в более чем один столбец, а потому, что они не текст цифры.

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

Так, начиная с F2 у меня есть: -

=IFERROR(INDEX($B$2:$B$4,MATCH(0,COUNTIFS($F$1:$F1,$B$2:$B$4),0)), 
IFERROR(INDEX($C$2:$C$4,MATCH(0,COUNTIFS($F$1:$F1,$C$2:$C$4),0)), 
IFERROR(INDEX($D$2:$D$4,MATCH(0,COUNTIFS($F$1:$F1,$D$2:$D$4),0)),""))) 

(Это формула массива, и должны быть введены с CtrlСдвигаВведите)

А начиная с G2: -

=COUNTIF($B$2:$D$4,F2) 

enter image description here

Во избежание указания точного диапазона (например, $ B2: $ B4), вы можете использовать следующие в F2 и настроить его на максимальное количество строк, которые, вероятно, будут использовать: -

=IFERROR(INDEX($B$2:$B$10,MATCH(0,IF(ISTEXT($B$2:$B$10),COUNTIFS($F$1:$F1,$B$2:$B$10),1),0)), 
IFERROR(INDEX($C$2:$C$10,MATCH(0,IF(ISTEXT($C$2:$C$10),COUNTIFS($F$1:$F1,$C$2:$C$10),1),0)), 
IFERROR(INDEX($D$2:$D$10,MATCH(0,IF(ISTEXT($D$2:$D$10),COUNTIFS($F$1:$F1,$D$2:$D$10),1),0)),""))) 

и это в G2: -

=IF(F2="","",COUNTIF($B$2:$D$10,F2)) 

но, конечно, он ограничен тремя столбцами, и все, что за этим стоит, может указывать на решение VBA.

Существует также общая формула для различных значений из массива 2d here, но выход включает в себя нуль при включении пустых строк и столбцов, поэтому потребуется некоторое изменение.

Так вот модифицированная формула из ссылки выше, с обработкой ошибок, начиная с I2: -

=IFERROR(INDEX(tbl_text, MIN(IF(IF(ISTEXT(tbl_text),COUNTIF($I$1:$I1, tbl_text),1)=0, ROW(tbl_text)-MIN(ROW(tbl_text))+1)), 
MATCH(0, COUNTIF($I$1:$I1, INDEX(tbl_text, MIN(IF(IF(ISTEXT(tbl_text),COUNTIF($I$1:$I1, tbl_text),1)=0, ROW(tbl_text)-MIN(ROW(tbl_text))+1)), , 1)), 0), 1),"") 

С подсчетов, начиная с J2: -

=IF(J2="","",COUNTIF(tbl_text,J2)) 

где tbl_text именованный диапазон (когда я его протестировал) как $ B $ 2: $ E $ 10

Это, как мне кажется, должно соответствовать вашему дополнительному критерию его более обобщения, поскольку вы можете установить tbl_text для включения максима um количество строк и столбцов, которые вы, вероятно, будете использовать.

Для изменения пробелов в таблице потребуется небольшая дополнительная модификация.

+0

Это отлично работает со статическим контентом. Я скорее ищу обобщенное решение. – Sriram

+0

Я не уверен, что это ясно из вопроса? Это будет работать для трех столбцов и любого количества строк, но вы можете сделать что-то другое с VBA. –

+0

Я выложу версию, в которой вам не нужно указывать точное количество строк. –

0
=SUM(IF((B2:D4=C10),1,0)) 

Чтобы получить результат после того, как с помощью формулы ударил ctrl + shift + enter

http://i.stack.imgur.com/P1COO.jpg

+0

https://drive.google.com/file/d/0B9sOt7squeIOYkFwaTZpRWpIaTg/view?usp=sharing –

+0

Это прекрасно работает со статическим контентом. Я скорее ищу обобщенное решение. – Sriram

+0

держите активную ячейку в сводной таблице и нажмите Alt + F5 , после чего значения будут обновлены. так же, как вы можете использовать - контекстное меню инструментов сводной таблицы -> вкладка «Анализ» -> «Группа данных и кнопка обновления». Если шарнир подключен к любому MOSS или БД, то измените настройки в настройках соединения :-) –

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