ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Worksheet Functions (https://www.excelbanter.com/excel-worksheet-functions/)
-   -   Finding 1 of 3 different strings in a string (https://www.excelbanter.com/excel-worksheet-functions/190689-finding-1-3-different-strings-string.html)

MarkMcG

Finding 1 of 3 different strings in a string
 

I have various text strings in a column called Errors:

Error 4.4.5, too many people
Error 500: you aren't allowed to do that
Error code is in the code

I need a single formula to evaluate which of the 3 strings I am working with
to pull information out of the string. Find() will tell me if "4.4.5" exists
in string1, but returns #VALUE for string2 and string3. I don't want to get
have to read errors. It would nice if Find() returned 0 if the string was
not found.

Here is what I would like:

If(String1(), dostring1, If(String2(), dostring2, dostring3))

Is there an elegant way to do this without a UDF?

Rick Rothstein \(MVP - VB\)[_647_]

Finding 1 of 3 different strings in a string
 
I doubt if anyone would call this "elegant", but it should do what you
want...

=IF(LEFT(A1,5)="Error",CHOOSE(MATCH(MID(A1,7,4),{" 4.4.","500:","code"},0),SUM(I$1:I$3),SUM(J$1:J$3), SUM(K$1:K$3)),"")

Note the absolute cell addresses used in the example formulas being executed
inside the CHOOSE function in response to your 3 error code messages...
these may be necessary when you copy the above formula down to protect their
referenced ranges... just something for you to keep in mind.

Rick


"MarkMcG" wrote in message
...

I have various text strings in a column called Errors:

Error 4.4.5, too many people
Error 500: you aren't allowed to do that
Error code is in the code

I need a single formula to evaluate which of the 3 strings I am working
with
to pull information out of the string. Find() will tell me if "4.4.5"
exists
in string1, but returns #VALUE for string2 and string3. I don't want to
get
have to read errors. It would nice if Find() returned 0 if the string was
not found.

Here is what I would like:

If(String1(), dostring1, If(String2(), dostring2, dostring3))

Is there an elegant way to do this without a UDF?



Ron Rosenfeld

Finding 1 of 3 different strings in a string
 
On Tue, 10 Jun 2008 08:15:00 -0700, MarkMcG
wrote:


I have various text strings in a column called Errors:

Error 4.4.5, too many people
Error 500: you aren't allowed to do that
Error code is in the code

I need a single formula to evaluate which of the 3 strings I am working with
to pull information out of the string. Find() will tell me if "4.4.5" exists
in string1, but returns #VALUE for string2 and string3. I don't want to get
have to read errors. It would nice if Find() returned 0 if the string was
not found.

Here is what I would like:

If(String1(), dostring1, If(String2(), dostring2, dostring3))

Is there an elegant way to do this without a UDF?


I'm not quite sure what you want to do, but perhaps this will help:

StringToFind is the string you are searching for.
ListOfStrings is a column of strings you are searching. In your example they
might be entered in A2:A4

To return the string number of the matched string:

=MATCH(TRUE,ISNUMBER(FIND(StringToFind,ListOfStrin gs)),0)

This formula must be entered as an **array formula** -- Hold down <ctrl<shift
while hitting <enter. Excel will place braces {...} around the formula.

So in the above, if StringToFind=500, then the formula would return the number
"2".

To simplify, put the MATCH formula in B1

Then you could do, for example:

If(b1=1, dostring1, If(b1=2, dostring2, dostring3))

To return the actual string in which the substring was found, enter this
**array formula** ( entered with <ctrl<shift<enter )


=INDEX(ListOfStrings,MATCH(TRUE,ISNUMBER(FIND(Stri ngToFind,ListOfStrings)),0))

--ron

T. Valko

Finding 1 of 3 different strings in a string
 
It would nice if Find() returned 0 if the string was not found.

Wrap it inside of a COUNT function:

=IF(COUNT(FIND(.....)),do_something,do_something_e lse)

FIND is case sensitive when looking for TEXT.

"ERROR" and "error" will not match using FIND.

Consider using SEARCH which is not case sensitive.


--
Biff
Microsoft Excel MVP


"MarkMcG" wrote in message
...

I have various text strings in a column called Errors:

Error 4.4.5, too many people
Error 500: you aren't allowed to do that
Error code is in the code

I need a single formula to evaluate which of the 3 strings I am working
with
to pull information out of the string. Find() will tell me if "4.4.5"
exists
in string1, but returns #VALUE for string2 and string3. I don't want to
get
have to read errors. It would nice if Find() returned 0 if the string was
not found.

Here is what I would like:

If(String1(), dostring1, If(String2(), dostring2, dostring3))

Is there an elegant way to do this without a UDF?





All times are GMT +1. The time now is 06:41 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com