Returns the position of a string of text within another string.
SEARCH(findtext, texttosearch, startposition)
returns the character position of the first occurrence of findtext within texttosearch.
startposition (optional) is the position from which the search starts.
The search is not case-sensitive.
A failed search gives the #VALUE! error.
SEARCH("yo", "Yoyo")
returns 1. The search is case-insensitive.
SEARCH("cho", "choochoo", 2)
returns 5.
SEARCH("t.n", "often")
returns 3, if regular expressions are enabled. The "." stands for any single character in a regular expression, so "t.n" matches "ten".
SEARCH("xyz", "abcdef", 1)
returns #VALUE!.
NOTE: This is an error condition, which must be 'handled' if used as the argument to another function.
IF( SEARCH("xyz","abcdef",1) , "Substring Present", "ERR: Missing Substring" )
returns #VALUE! which is not very useful, therefore we could use either ISERROR() or ISNUMBER() for example:
IF( ISERROR( SEARCH("xyz","abcdef",1) ) , "ERR: Missing Substring", "Substring Present" ).
returns "ERR: Missing Substring" ... allowing the IF() to function, and not propagating the error from the SEARCH() function.
IF( ISNUMBER( SEARCH("xyz","abcdef",1) ) , "Substring Present", "ERR: Missing Substring" ).
returns "ERR: Missing Substring" ... allowing the IF() to function, and not propagating the error from the SEARCH() function.
NOTE: In practice, it may be more maintainable to use ISNUMBER() to avoid negative logic, and it is more indicative of the evaluation desired: if the substring has a position, then ISNUMBER() is TRUE, else ISNUMBER() is FALSE.
Finding Specific Text in a Product Catalog
Imagine you have a product catalog, and you need to quickly identify which products belong to a specific brand or contain a certain keyword in their description. The SEARCH function is perfect for this.
The Goal: To find all products from the "Acme" brand within a list of product descriptions.
Table:
Product ID | Product Description | SEARCH Result | ||
|---|---|---|---|---|
A | B | C | ||
1 | 101 | Acme-Brand Power Drill | 1 | |
2 | 102 | Heavy-Duty Wrench | #VALUE! | |
3 | 103 | Acme-Brand Sanding Disc Pack | 1 | |
4 | 104 | Multi-Purpose Screwdriver Set | #VALUE! | |
5 | 105 | Acme-Brand Wood Planner | 1 |
The Formula:
In cell C1, you would enter the following formula:
SEARCH("Acme", B1)
Explanation:
How It Works:
Adding Logic (Combining with IFERROR):
To make this data more useful and easier to filter, you would typically wrap the SEARCH function in an IFERROR or ISNUMBER function to get a simple TRUE/FALSE or YES/NO result.
The Improved Formula:
This formula is a bit complex and has a subtle detail that's important to understand. Let's break it down from the inside out to see what each part does.
The formula is IFERROR(IF(SEARCH("Acme", B2), 1), "#VALUE!")
This formula effectively translates to:
PRODUCT & FEATURES
RESOURCES
Terms | Privacy | Spam Policy
© 2026 Zapof