Search for a text string in an excel table
Answer:
Excel 2007 array formula in B13:
Select cell range B13:E16. Click formula bar. Press + CTRL + SHIFT + ENTER.
Replace FIND function with SEARCH function if you don´t want the formula case sensitive.
Named ranges
Table1 (B3:E6)
What is named ranges?
Download excel example file
search-for-a-string-in-an-excel-table.xlsx
(Excel 2007 Workbook *.xlsx)
Explaining array formula in cell B13
Step 1 - Identify cells containg search string
Find function returns the starting point of one text string within another text string. ISNUMBER(FIND($C$9, Table1)) creates this array in cell B11:E14:
Column B has no cells containing string "AA".
Column C has 1 cell containing string "AA". Cell C3
Column D has 1 cell containing string "AA". Cell D4.
Column E has 1 cell containing string "AA". Cell E5.
Step 2 - Return row number
ROW(Table1)-MIN(ROW(Table1))+1, "") returns this array:
If string "AA" is found in a cell in the table the corresponding row number is returned.
Step 3 - Sort the row numbers from smallest to largest
Small function returns the k-th smallest number.
SMALL(IF(ISNUMBER(FIND($C$9, Table1)), ROW(Table1)-MIN(ROW(Table1))+1, ""), ROW(Table1)-MIN(ROW(Table1))+1) returns this array:
Step 4 - Return a value at the intersection of a particular row and column
INDEX(Table1, SMALL(IF(ISNUMBER(FIND($C$9, Table1)), ROW(Table1)-MIN(ROW(Table1))+1, ""), ROW(Table1)-MIN(ROW(Table1))+1), COLUMN(Table1)-MIN(COLUMN(Table1))+1)
Step 5 - Remove errors
=IFERROR(INDEX(Table1, SMALL(IF(ISNUMBER(FIND($C$9, Table1)), ROW(Table1)-MIN(ROW(Table1))+1, ""), ROW(Table1)-MIN(ROW(Table1))+1), COLUMN(Table1)-MIN(COLUMN(Table1))+1), "")
Functions in this article:
INDEX(array,row_num,[column_num])
Returns a value or reference of the cell at the intersection of a particular row and column, in a given range
IF(logical_test;[value_if:true];[value_if_false])
Checks whether a condition is met, and returns one value if TRUE, and another value if FALSE
ROW(reference) returns the rownumber of a reference
COLUMN(reference) Returns the column number of a reference
IFERROR(value;value_if_error) Returns value_if_error if expression is an error and the value of the expression itself otherwise
MIN(number1,[number2])
Returns the smallest number in a set of values. Ignores logical values and text
FIND(find_text;within_text;[start_num]) Returns the starting position of one text string within another text string. FIND is case-sensitive
SEARCH() Returns the number of the character at which a specific character or text string is first found, reading left to right (not case sensitive)
SMALL(array,k) returns the k-th smallest number in this data set.
This blog article is one out of five articles on the same subject.
- Search for a cell value in an excel table
- Search for a text string in an excel table
- Lookup with multiple criteria and display multiple search results using excel formula
- Lookup with multiple criteria and display multiple search results using excel formula, part 2
- Lookup with multiple criteria and display multiple search results using excel formula, part 3











November 13th, 2011 at 3:36 pm
Dear Oscar,
Do you know if there is a formula (or combination) that results in a text value I want to use with "vlookup"
Something like the "like" function in Access.
Example:
text = "Kn1263-Techstore-MrFixit-12-11-2011"
I want to Find the part "Tech".
Then with Vlookup I want to find a related account in an Table.
such a Tech is related to "200 Repare account"
So I can keep controle over my Bankaccount for example.
Maybe in VBA?
Thanks in advance for your reply.
Kind regards,
Lourens van 't Wout
The Netherlands
November 14th, 2011 at 3:05 pm
Lourens van 't Wout,
Yes, I believe it is possible.
Can you describe the two tables and how they are related?
November 15th, 2011 at 2:07 pm
Lourens,
This post describes how to search for multiple textstrings and return a match from another table: http://www.get-digital-help.com/2010/11/22/return-multiple-matches-with-wildcard-vlookup-in-excel/
January 10th, 2012 at 9:27 am
Hi Oscar,
Request your help for a similar kind of a query. I'm in a fix and can't really figure out how to get the required output.
I have two columns A & B both containing string values. The value in Column A is basically a reference number and value in Column B contains detailed text containing that number itself...
For e.g. Row 1 for Column A has a value 00125465.. Now in column B I have a value like (without qoutes) "With reference to the record number 00125465, we would like to..". This value of column A might exist in multiple rows of Column B.
In my actual data there are around 160,000 unique values for column A and 97,000 values for column B. I need to search for all values of column A in column B and have some kind of an identifier in say Column C to know what values for column A are present in Column B. Please note that a value for Column A might exist on row # 10 and then row # 1000 in column B.
Hope you can help me with this.
Cheers !
January 13th, 2012 at 1:16 pm
Hasan,
Check out the attached file:
Hasan.xlsx
January 13th, 2012 at 7:15 pm
Hi Oscar,
Many thanks for the file. Apparently it looks to be exactly what I was looking for. This is simply great
..
Having said that the code seems to be really complex. Can I please have your email address so that I can request for any clarifications if required for the code ?
Once again thanks a lot.
God Bless !!
January 13th, 2012 at 8:15 pm
Hi Oscar,
Sorry for bothering you again for this. Will you be please kind enough to define the formula in two three lines in simple words for me.. Can't really understand how these functions are working.. specially ' _xlfn.IFERROR '
..
Apologies for the bother but would really appreciate your help.
God Bless !
January 16th, 2012 at 10:09 am
Hasan,
You can find an explanation here:
http://www.get-digital-help.com/2010/11/22/return-multiple-matches-with-wildcard-vlookup-in-excel/
IFERROR function removes errors.