Использование CountIf в Excel с row () в качестве второго диапазона

Возможно ли иметь функцию в Excel, где второй диапазон - это текущая строка, в которой находится пользователь? Например, если в столбце A есть номера клиентов, то может ли столбец B у пользователя быть текущим количеством строк с таким же номером клиента? Что-то вроде =countif(A1:Row(), Row()). Итак, если бы пользователь был на B14, тогда функция была бы =countif(A1:A14, A14).

Я бы предпочел не использовать VBA, и я новичок в функциях в Excel. Приношу свои извинения, если это простой ответ. Клянусь, я действительно искал ответ, прежде чем ответить на этот вопрос.


person liquidanswer    schedule 30.07.2014    source источник
comment
Хотя я опубликовал ответ, возможно, я неправильно понял ваш вопрос, я просто основал его на вашем примере. Вы можете уточнить?   -  person L42    schedule 30.07.2014


Ответы (4)


Ответ на ваш вопрос - да. Используйте функцию INDIRECT. Что-то вроде:

=COUNTIF(INDIRECT("A1:A"&Row()), INDIRECT("A"&Row()))
person L42    schedule 30.07.2014
comment
Это было именно то, что я искал. Работает как часы. Спасибо, L42. - person liquidanswer; 30.07.2014

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

Посмотрите здесь и скажите, если вам нужна дополнительная помощь: http://www.techrepublic.com/blog/microsoft-office/how-to-add-a-drop-down-list-to-an-excel-cell/

person Alexandru Cimpanu    schedule 30.07.2014

Другой подход:

=COUNTIF(OFFSET($A$1,0,0,ROW()),A:A)
person chris neilsen    schedule 30.07.2014

Лучше, чем использовать "полностью" нестабильные установки OFFSET и INDIRECT, - это использовать установку с INDEX, которая в этой конструкции просто энергозависима "при открытой книге".

Кроме того, если вы ищете формулу, которую можно скопировать в другие ячейки таким образом, чтобы указанная строка всегда была той, в которой находится формула, гораздо лучше использовать конструкцию с ROWS, а не со строкой ROW, поскольку последняя зависит от вставки строк в пределах диапазона, тогда как прежний - нет. Следовательно, формула, помещенная в строку 14, будет следующей:

= СЧЁТЕСЛИ (A1: ИНДЕКС (A: A; СТРОКИ ($ 1: 14)); ИНДЕКС (A: A; СТРОКИ ($ 1: 14)))

С Уважением

person XOR LX    schedule 30.07.2014
comment
Хороший звонок. Еще лучше было бы =COUNTIF($A$1:INDEX(A:A,ROW()),A:A) - person chris neilsen; 30.07.2014
comment
Вы используете весь столбец A в качестве значения критерия ?? И я по-прежнему считаю, что использование неквалифицированных конструкций ROW () - одна из наиболее часто используемых, хотя и неправильно понимаемых функций предлагаемых решений на различных форумах Excel в Интернете. - person XOR LX; 30.07.2014
comment
Вы используете весь столбец A ... в качестве значения критерия. Да, я. При таком использовании он фактически является оператором пересечения и возвращает пересечение столбца A и строки, в которой находится формула. Что касается Row(), он возвращает номер строки, в которой находится формула, именно то, что требуется в этом случае. Как такое злоупотребление? - person chris neilsen; 30.07.2014