2013-09-04 20 views
177

Czy istnieje wbudowana funkcja sprawdzania, czy komórka zawiera dany znak/podciąg?Sprawdź, czy komórka zawiera podłańcuch

To oznaczałoby można zastosować funkcje tekstowe jak Left/Right/Mid warunkowo bez rzucania błędy podczas znaki ograniczające są nieobecne.

Odpowiedz

303

Spróbuj użyć tego:

=ISNUMBER(SEARCH("Some Text", A3)) 

ten powróci TRUE jeśli komórka zawiera Some TextA3.

+7

Przebieg! Dzięki gwin003 :) Wciąż jestem nieco zaskoczony, że nie ma bardziej intuicyjnej funkcji. – geotheory

+15

Tak, zgadzam się, byłoby miło, gdyby istniała funkcja 'CONTAINS (" Text ", cell)'. – gwin003

+2

Coś utknąłem na początku: naprawdę musisz użyć 'ISNUMBER', a także' SEARCH'. Używałem tego wewnątrz 'IF' i wymyśliłem:' = JEŻELI (ISNUMBER (SZUKAJ ($ G 1, A73)), A73, B73) ' – Matthew

6

Sprawdź funkcję FIND() w programie Excel.

Składnia:

FIND(substring, string, [start_position]) 

Zwraca #VALUE! jeśli nie znajdzie podciąg.

+0

Tak zagnieżdżony w 'ISNUMBER' to działa, tylko w przypadku dopasowywania wielkości liter. – geotheory

17

Następująca formuła określa, czy tekst "CHECK" pojawia się w komórce C10. Jeśli nie, wynik jest pusty. Jeśli tak, wynikiem jest praca "CHECK".

=IF(ISERROR(FIND("CHECK",C10,1)),"","CHECK") 
+0

Możesz użyć 4 spacji lub tabulacji na początku linii, aby podświetlić blok kodu: – NiematojakTomasz

-2

Oto wzór używam

=IF(ISNUMBER(FIND(".",A1)), LEN(A1) - FIND(".",A1), 0)

+0

Sprawdza, czy "." Jest zawarty w A1, a jeśli tak, zwraca ... liczbę znaków pozostałych w A1, zaczynając od ".". Nie jestem pewien, czy te dodatkowe obliczenia są tutaj istotne. –

9

dla tych, którzy chcieliby, aby zrobić to za pomocą pojedynczej funkcji wewnątrz instrukcji IF, używam

=IF(COUNTIF(A1,"*TEXT*"),TrueValue,FalseValue) 

aby sprawdzić, czy podłańcuch TEKST jest w komórce A1

[UWAGA: TEKST potrzebuje mieć gwiazdki wokół niego]

6

Formuła ta wydaje się bardziej intuicyjny do mnie:

=SUBSTITUTE(A1,"SomeText","") <> A1 

ta zwraca TRUE jeśli „Jakiś tekst” jest zawarty w A1.

Formuły IsNumber/Search i IsError/Find wymienione w innych odpowiedziach z pewnością działają, ale zawsze uważam, że często potrzebuję zbyt często przyglądać się pomocy lub eksperymentom w programie Excel.

1

Lubię odpowiedź Rink.Attendant.6. Naprawdę chcę sprawdzić wiele ciągów znaków i zrobiłem to w następujący sposób:

Najpierw sytuacja: nazwy, które mogą być budowniczymi domu lub nazwami społeczności i muszę budować grupy jako jedną grupę. Aby to szukam słowa „budowniczy” lub „budowy”, itp zrobić -

=IF(OR(COUNTIF(A1,"*builder*"),COUNTIF(A1,"*builder*")),"Builder","Community") 
+0

Witamy w SO. Powinieneś przeczytać, co sprawia, że ​​[dobra odpowiedź] (https://stackoverflow.com/help/how-to-answer). – geotheory

+0

Nie rozumiem, co to ma zrobić. Sprawdza budowniczego dwa razy, gdy prawdopodobnie wystarczyłoby raz. Jeśli znajdzie konstruktora, zwróci budowniczego, w przeciwnym razie zwraca społeczność. Słowo konstrukcja nie pojawia się nigdzie. Być może coś w stylu '= OR (LICZ.IF (A1," * budowniczy * "), LICZ.JEŻELI (A1," * konstrukcja * "))'? – fantabolous

0

To stara sprawa, ale to rozwiązanie dla tych, którzy za pomocą programu Excel 2016 lub nowszy jest można usunąć potrzebę zagnieżdżone, jeśli struktury za pomocą nowego warunkowego warunku są IFS(condition1, return1 [,condition2, return2] ...).

Mam sformatowany to, aby wizualnie jaśniejszy od tego, jak wykorzystać go w przypadku tego pytania:

=IFS(
ISERROR(SEARCH("String1",A1))=FALSE,"Something1", 
ISERROR(SEARCH("String2",A1))=FALSE,"Something2", 
ISERROR(SEARCH("String3",A1))=FALSE,"Something3" 
) 

Od SEARCH zwraca błąd, jeśli ciąg nie zostanie znaleziony owinąłem go z ISERROR(...)=FALSE do sprawdź prawdę, a następnie zwróć pożądaną wartość. Byłoby wspaniale, gdyby SEARCH zwrócił 0 zamiast błędu dla czytelności, ale to tylko jak działa niestety.

Kolejna ważna uwaga jest taka, że ​​IFS zwróci wynik, który znajdzie jako pierwszy, a zatem kolejność jest ważna. Na przykład, jeśli moje ciągi były Surf, Surfing, Surfs jako String1,String2,String3 powyżej, a ciąg moich komórek był Surfing, to pasowałoby do pierwszego terminu zamiast drugiego, ponieważ podciąg to Surf. Zatem wspólne mianowniki muszą znajdować się na końcu listy. Mój IFS musiałby być zamawiany, aby Surfing, Surfs, Surf działał poprawnie (zamienianie Surfing i Surfs również działałoby w tym prostym przykładzie), ale Surf musiałby być ostatni.

Powiązane problemy