2013-05-29 20:43:50 +0000 2013-05-29 20:43:50 +0000
89
89

В Excel, как проверить, есть ли ячейка в списке значений (диапазон ячеек)

У меня есть диапазон (A3:A10), который содержит имена, и я хотел бы проверить, соответствует ли содержимое другой ячейки (D1) одному из имен в моем списке.

Я назвал диапазон A3:A10 ‘some_names’, и я хотел бы, чтобы формула excel, которая даст мне True/False или 1/0 в зависимости от содержимого.

Ответы (9)

92
92
92
2013-05-29 20:47:46 +0000

=COUNTIF(some_names,D1)

должен работать (1, если имя присутствует - больше, если больше одного экземпляра).

66
66
66
2013-06-06 20:40:03 +0000

Мой предпочитаемый ответ (измененный от Ian):

=COUNTIF(some_names,D1)>0

, который возвращает TRUE, если D1 найден в диапазоне some_имя хотя бы один раз, или FALSE в противном случае.

(COUNTIF возвращает целое число, сколько раз критерий найден в диапазоне).

26
26
26
2014-11-10 22:57:45 +0000

Я знаю, что в ОП специально указано, что список пришел из диапазона ячеек, но другие могут наткнуться на него при поиске определенного диапазона значений.

Вы также можете посмотреть на конкретные значения, а не на диапазон, используя функцию MATCH . Это даст вам число, где оно совпадает (в данном случае, второе место, так что 2). Она вернет #N/A, если совпадений нет.

=MATCH(4,{2,4,6,8},0)

Вы также можете заменить первые четыре на ячейку. Поместите 4 в ячейку A1 и введите это в любую другую ячейку.

=MATCH(A1,{2,4,6,8},0)
18
18
18
2013-05-29 21:09:03 +0000

Если вы хотите превратить счетчик в какой-нибудь другой вывод (например, логический), вы также можете сделать:

=IF(COUNTIF(some_names,D1)>0, TRUE, FALSE)

Наслаждайтесь!

8
8
8
2013-05-29 23:28:54 +0000

Для разнообразия вы можете использовать MATCH, например

=ISNUMBER(MATCH(D1,A3:A10,0))

5
5
5
2018-07-11 22:06:20 +0000

есть небольшой трюк, возвращающий Boolean в случае, если в some_names:

=OR("Red"={"purple","red","blue","green","orange"})

может быть явно указан диапазон "purple","red","blue","green","orange":

Обратите внимание, что это не формула массива.

2
2
2
2013-12-05 19:33:00 +0000

Вы можете вложить --([range]=[cell]) в аргумент IF, SUMIFS, или COUNTIFS. Например, IF(--($N$2:$N$23=D2),"in the list!","not in the list"). Я считаю, что это может использовать память более эффективно.

Или же, вы можете обернуть ISERROR вокруг VLOOKUP, все обернутые вокруг IF утверждение. Например, IF( ISERROR ( VLOOKUP() ) , "not in the list" , "in the list!" ).

0
0
0
2016-12-08 12:38:21 +0000

Версия формулы массива (ввод с помощью Ctrl + Shift + Enter):

=OR(A3:A10=D1)
-1
-1
-1
2013-08-24 11:59:30 +0000

В таких ситуациях я хочу, чтобы меня предупреждали только о возможных ошибках, поэтому я бы решал ситуацию таким образом …

=if(countif(some_names,D1)>0,"","MISSING")

Тогда я бы скопировал эту формулу из E1 в E100. Если значения в столбце D нет в списке, я получу сообщение MISSING, но если значение существует, я получу пустую ячейку. Это делает отсутствующие значения намного более заметными.

Похожие вопросы

6
13
9
10
6