2016-02-04 7 views
0

Таким образом, я унаследовал файл Excel, который используется для планирования и отслеживания времени отбора мощности и времени для около 100 сотрудников. У них есть столбец для каждого дня в году и год разбит на два листа.Excel, подсчитывающий определенный диапазон ячеек в строке, если другая ячейка соответствует столбцу

Я пытаюсь создать общий лист, который показывает группировку для каждого сотрудника и подсчитывает каждый из типов временных кодов, которые используются в листах отслеживания. Каждый раз, когда тип имеет код, который используется для условного формирования NM1, NM2, ...

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

Вот один из клеток, как это теперь:

=COUNTIF('2015MarNov'!$E$88:$AH$88,"*"&"NM1"&"*") 

имя сотрудника находится в столбце D, и это рассчитывает NM1 всего за январь (колонны E через AH).

+0

Возможно, вы захотите рассмотреть некоторые VLOOKUP. Это может помочь. – durbnpoisn

+0

Итак, вы хотите добавить к существующей формуле, чтобы также включить критерии для имени сотрудников? –

+0

Я пытаюсь выяснить, есть ли более простой способ построить это, чтобы избежать необходимости вырезать и вставлять его более 100 раз и изменять ссылку на строку с помощью find/replace. –

ответ

0

Попробуйте это:

=COUNTIF(OFFSET($E$1:$AH$1,MATCH(<target employee cell>,$D:$D,0)-1,0),"*NM1*") 

В этом примере предполагается, что я строка 1 содержит заголовок и эту строку 2 начинает с сотрудниками. Если это не так, попробовать что-то вроде этого:

=COUNTIF(OFFSET($E$5:$AH$5,MATCH(<target employee cell>,$D$6:$D$106,0),0),"*NM1*") 

Edit, объяснение:

Match(<target employee cell>,<range of employees>,0) 

Эта функция возвращает относительную строку, в которой нашли цель работника, то есть, если работник находится в D7 а диапазон D6: D106, то возвращаемое значение равно 1, так как это относительное смещение от начальной диапазона (начиная с 0)

OFFSET(<range>,<rows>,<columns>) 

Эта функция сдвигает любой заданный диапазон по количеству строк и столбцов, как указано. В предыдущей функции диапазон смещается на 1 строку (сдвинут на 1 строку вниз).

COUNTIF(<range>,<criteria>) 

<range> определяются сдвинутый диапазоном от OFFSET функции.

+0

'OFFSET()' является [изменчивой функцией] (https://msdn.microsoft.com/en-us/library/office/bb687891 .aspx), поскольку он будет пересчитывать все ячейки каждый раз, когда происходит изменение, независимо от того, являются ли они данными, которые влияют на формулу или нет. В зависимости от того, сколько из этих формул OP будет размещено на листе, оно будет сильно замедляться в любое время при внесении изменений. –

+1

Хорошая точка, сохранит это в виду. Благодарю. –

+0

Вот ссылка на раздел документа, о котором идет речь https://docs.google.com/spreadsheets/d/1CbLsekrM2Em5NQ4ibg5MjtNpeJ0rDgsK5w4wVTcIMyY/edit?usp=sharing –

0

Используйте это:

=COUNTIF(INDEX('2015MarNov'$E:$E,MATCH("NAME",'2015MarNov'$D:$D,0)):INDEX('2015MarNov'$AH:$AH,MATCH("NAME",'2015MarNov'$D:$D,0)),"*"&"NM1"&"*") 

Изменить «NAME» в ячейке на сводном листе имеет имя сотрудника. Вы также можете изменить «NM1» на ссылку ячейки.