Funkcja SEARCH
Zwraca numer pozycji, na której został po raz pierwszy znaleziony określony znak lub ciąg tekstowy, czytając od lewej do prawej. Funkcja wyszukiwania nie rozróżnia wielkości liter, ale uwzględnia akcenty.
Składnia
SEARCH(<find_text>, <within_text>[, [<start_num>][, <NotFoundValue>]])
Parametry
Termin |
Definicja |
---|---|
find_text |
Tekst do znalezienia. W argumencie find_text można używać znaków symboli wieloznacznych — znaku zapytania (?) i gwiazdki (*). Znak zapytania zastępuje jeden znak, a znak gwiazdki zastępuje dowolną sekwencję znaków. Aby znaleźć rzeczywisty znak zapytania lub gwiazdkę, należy poprzedzić szukany znak znakiem tyldy (~). |
within_text |
Tekst, w którym ma zostać wyszukany tekst find_text, lub kolumna zawierająca tekst. |
start_num |
(Argument opcjonalny) Pozycja znaku w tekście określonym przez argument within_text, od której ma się rozpocząć wyszukiwanie. W przypadku pominięcia tego argumentu używana jest wartość 1. |
NotFoundValue |
(Argument opcjonalny) Wartość, która ma być zwracana, gdy podczas wykonywania operacji nie zostanie znaleziony pasujący podciąg. Zazwyczaj jest to wartość 0, -1 lub BLANK(). |
Wartość zwracana
Numer pozycji początkowej pierwszego ciągu tekstowego, licząc od pierwszego znaku drugiego ciągu.
Uwagi
Funkcja wyszukiwania nie rozróżnia wielkości liter. Przy wyszukiwaniu litery „N” znajdowane jest pierwsze wystąpienie litery „N” lub „n”.
Funkcja wyszukiwania uwzględnia akcenty. Przy wyszukiwaniu litery „á” znajdowane jest pierwsze wystąpienie litery „á”, ale nie wystąpienia liter „a”, „à”, ani ich wersji „A”, „Á”.
Używając tej funkcji, można zlokalizować jeden ciąg tekstowy wewnątrz drugiego ciągu tekstowego i zwrócić pozycję, na której rozpoczyna się pierwszy ciąg.
Funkcji SEARCH można również użyć w celu ustalenia lokalizacji znaku lub ciągu tekstowego w innym ciągu tekstowym, a następnie można użyć funkcji MID, aby zwrócić tekst, albo funkcji REPLACE, aby zmienić tekst.
Jeśli tekstu określonego przez argument find_text nie można odnaleźć w tekście określonym przez argument within_text, formuła zwraca błąd. To zachowanie przypomina zachowanie programu Excel, który zwraca wartość #ARG, jeśli nie można odnaleźć podciągu. Wartości null w argumencie within_text będą w tym kontekście interpretowane jako ciąg pusty.
Ta funkcja języka DAX może zwracać inne wyniki w przypadku użycia jej w modelu, który został wdrożony i do którego skierowano następnie zapytanie w trybie zapytania bezpośredniego. Aby uzyskać więcej informacji o różnicach semantycznych w trybie zapytania bezpośredniego, zobacz https://go.microsoft.com/fwlink/?LinkId=219171.
Przykład: wyszukiwanie w obrębie ciągu
Opis
Poniższa formuła znajduje pozycję litery „n” w wyrazie „printer”.
Kod
=SEARCH("n","printer")
Komentarze
Formuła zwraca wartość 4, ponieważ „n” jest czwartym znakiem w wyrazie „printer”.
Przykład: wyszukiwanie w obrębie kolumny
Opis
Jako argumentu funkcji SEARCH można również użyć odwołania do kolumny. Poniższa formuła znajduje pozycję znaku „-” (łącznik) w kolumnie [PostalCode].
Kod
=SEARCH("-",[PostalCode])
Komentarze
Zwracany wynik to kolumna liczb wskazujących pozycję indeksu dla łącznika.
Przykład: obsługa błędów za pomocą funkcji SEARCH
Opis
Działanie formuły z poprzedniego przykładu nie powiedzie się, jeśli szukany ciąg nie zostanie znaleziony w każdym wierszu kolumny źródłowej. Dlatego w następnym przykładzie pokazano sposób użycia funkcji IFERROR z funkcją SEARCH umożliwiający zagwarantowanie zwrócenia prawidłowego wyniku dla każdego wiersza.
Poniższa formuła znajduje pozycję znaku „-” w kolumnie i zwraca wartość -1, jeśli nie można odnaleźć tego ciągu.
Kod
= IFERROR(SEARCH("-",[PostalCode]),-1)
Komentarze
Należy zauważyć, że typ danych wartości używanej jako wynik w przypadku błędu musi być zgodny z typem danych wartości używanej jako prawidłowy wynik. W tym przypadku jako wartość błędu jest używana wartość liczbowa, ponieważ funkcja SEARCH zwraca wartość całkowitą.
Można jednak także zwracać wartość pustą (ciąg pusty), używając funkcji BLANK() jako drugiego argumentu funkcji IFERROR.