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

W Excelu, jak sprawdzić, czy komórka znajduje się na liście wartości (zakres komórek)

Mam zakres (A3:A10), który zawiera nazwy, i chciałbym sprawdzić, czy zawartość innej komórki (D1) pasuje do jednej z nazw na mojej liście.

Nazwałem zakres A3:A10 ‘niektóre nazwy’, i chciałbym formułę excel, która da mi True/False lub 1/0 w zależności od zawartości.

Odpowiedzi (9)

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

=COUNTIF(some_names,D1)

powinien działać (1 jeśli nazwa jest obecna - więcej jeśli jest więcej niż jedna instancja).

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

Moja preferowana odpowiedź (zmodyfikowana z Iana) brzmi:

=COUNTIF(some_names,D1)>0

, która zwraca TRUE, jeśli D1 znajdzie się w zakresie kilku nazw co najmniej raz, lub FALSE inaczej.

(COUNTIF zwraca liczbę całkowitą określającą ile razy kryterium znajduje się w zakresie)

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

Wiem, że OP konkretnie stwierdził, że lista pochodzi z zakresu komórek, ale inni mogą się na to natknąć szukając określonego zakresu wartości.

Można też szukać konkretnych wartości, a nie zakresu za pomocą funkcji MATCH . W ten sposób otrzymasz numer, w którym to pasuje (w tym przypadku drugi punkt, czyli 2). Jeśli nie ma dopasowania, zwróci #N/A.

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

Można też zastąpić pierwszą czwórkę komórką. Umieść 4 w komórce A1 i wpisz to do każdej innej komórki.

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

Jeśli chcesz zamienić licznik na jakieś inne wyjście (jak boolean) możesz również zrobić:

=IF(COUNTIF(niektóre nazwy,D1)\>0, TRUE, FALSE)

Enjoy!

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

Dla odmiany można użyć MATCH, np.

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

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

istnieje sprytny mały trik zwrotny Boolean w przypadku gdy zakres some_names może być wyraźnie określony taki w "purple","red","blue","green","orange":

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

Zauważ, że nie jest to wzór macierzowy

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

Możesz zagnieżdżać --([range]=[cell]) w argumencie IF, SUMIFS, lub COUNTIFS. Na przykład, IF(--($N$2:$N$23=D2),"in the list!","not in the list"). Wierzę, że dzięki temu można efektywniej wykorzystywać pamięć.

Alternatywnie, można owinąć ISERROR wokół VLOOKUP, a wszystko to owinąć wokół oświadczenia IF. Na przykład, IF( ISERROR ( VLOOKUP() ) , "not in the list" , "in the list!" ).

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

Tablica Wersja formuły (wprowadzić za pomocą Ctrl + Shift + Enter):

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

W takich sytuacjach chcę być tylko ostrzegany o możliwych błędach, więc rozwiązałbym sytuację w ten sposób…

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

Wtedy skopiowałbym ten wzór z E1 do E100. Jeśli wartości w kolumnie D nie ma na liście, otrzymam wiadomość MISSING, ale jeśli wartość istnieje, otrzymam pustą komórkę. To sprawia, że brakujące wartości wyróżniają się znacznie bardziej.