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


88

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

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

Ответы:


92

= СЧЕТЕСЛИ (some_names, D1)

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


Как я могу изменить формулу, чтобы она работала в случае, когда some_namesсодержит 2 столбца, а также вместо D1 у меня есть D1: E1?
user1993

66

Мой предпочтительный ответ (модифицированный от Яна):

=COUNTIF(some_names,D1)>0

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

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


26

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

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

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

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

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

1
Очень хорошо. Не забудьте добавить «кавычки», если ваше значение не является числом (взял пару пытается разобраться с этим).
DAV

1
К сожалению, вы не можете использовать это в условном форматировании :(
StarWeaver

Что вы можете. В Excel 2007 и более поздних версиях вы можете использовать функцию IFERROR. = IFERROR (MATCH (A1, {2,4,6,8}, 0), 0) Затем вы можете выполнить условное форматирование в зависимости от того, будет ли эта ячейка = 0 или> 0, в зависимости от того, что вы предпочитаете.
RPh_Coder

6
=OR(4={2,4,6,8})
Слай

Из этого ответа ясно, что решение возвращает # N / A - это правда. Но это кажется бесполезным: вы не можете использовать # N / A в предложении if, поэтому вы не можете сказать IF (MATCH (4 {2,3}, 0), "yay", "boo") ... ответ # N / A, а не "бу"
GreenAsJade

18

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

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

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


3
ИСТИНА и ЛОЖЬ помогают указать, что нужно заменить
Darcys22


4

есть хитрый маленький трюк, возвращающий логическое значение в случае, если диапазон some_namesможет быть указан явно, например "purple","red","blue","green","orange":

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

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


На самом деле, это является формула массива. То, что это не является формулой, введенной в массив ;-)
robinCTS

2

Вы можете вложить --([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

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

=OR(A3:A10=D1)

Это работает. Я думаю, что он получил отрицательный ответ, потому что понижающий голос не знал, как ввести формулу массива ... после ввода он должен выглядеть как {= OR (R34: R36 = T34)}, если вы ввели его
правильно

-1

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.