2015-08-15 3 views
0

Я ищу лучший способ выполнить следующую задачу. У меня есть 2 стола. В таблице 1 приведены значения, которые я хочу, чтобы искать для подсчета строк:Считать строки, содержащие определенное значение, основанное на нескольких критериях

 A 
1 ID  
2 a 
3 b 
4 c 
5 d 
6 e 
7 f 

В таблице 2 приведены данные, расположенные рядами:

 A  B  C  D  E  F  G 
1 FileNo Data1 Data2 Data3 Data4 Data5 Data6 
2 w1  a  b  a  b  a  b 
3 w1  a  b  a  b  e  f 
4 w2  c  d  c  d  e  f 
5 w1  c  d  c  d  a  b 
6 w1  b  c  b  c  e  f 
7 w2  a  b  a  d  a  b 
8 w3  c  d  c  d  e  f 

мне нужно подсчитать количество строк, которые начинаются с " w1 "и содержать значение" a "(а затем" b "и" c "и т. д., а затем то же для строк, начинающихся с« w2 ». Метод грубой силы, как я вижу, COUNTIF в каждой строке, чтобы получить 1 или 0 на основе существования значения в строке. Затем использовать SUMPRODUCT для подсчета строк на основе критерия FileNo и тех, что 1/0. Дело в том, что выше всего лишь пример. lly имеют около 40 значений в таблице 1 и несколько тысяч в таблице 2. Использование 40 столбцов с COUNTIF в тысячах строк выглядит громоздким. Я считаю, что есть более элегантный способ решить эту проблему.

+0

Если ваши данные находятся в отдельной таблице (отдельный CSV или рабочая тетрадь), вы можете запросить ее с помощью таблицы запросов. Смотрите здесь, но используйте источник excel. http://www.excel-easy.com/examples/microsoft-query.html – DaveMac

ответ

0

Вам придется прибегнуть к летучему OFFSET¹ function для того, чтобы пройти через ряды ищут существования WS х значения в сочетании с по меньшей мере одним вхождением в а, б, в, г, д или ф.

COUNTIF across rows with two criteria

Формула массива в J2 есть,

=SUM(IF($A$2:$A$9999=J$1, SIGN(COUNTIFS(OFFSET($A$2, ROW($1:$9998)-1, 1, 1, 6), $I2)))) 

Формула массива должна быть завершена с Ctrl + Сдвигом + Enter↵. После правильного ввода в первую ячейку они могут быть заполнены или скопированы или правы точно так же, как и любая другая формула. Заполните J2 справа на L2, затем заполните J2: L2 до J7: L7.

При переписывании этой формулы в ваших собственных целях обратите внимание, что в то время как A2:9999 и ROW(1:9998) находятся в шахматном порядке по одной строке, они имеют одинаковый размер и это важно. ROW(...) всегда должен начинаться с , но быть таким же количеством строк, что и диапазон в столбце A. Вы ищете позицию в пределах A2: A9999, а не номер физической строки на листе.

Я попытался сопоставить результаты с ws1, чтобы вы могли легко определить рабочие результаты этой пары критериев.

¹ OFFSET считается изменчивой функцией, которая пересчитывается всякий раз, когда что-либо в книге изменяется.

+0

@Abyrvalg - кстати, мои извинения. Сегодня я ответил на почти идентичный вопрос, опирающийся на отдельные критерии и первоначально обозначенный как потенциальный дубликат. Добавление второго критерия сделало этот вопрос более чем достаточно различным, чтобы гарантировать его собственную публикацию. – Jeeped

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