ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Worksheet Functions (https://www.excelbanter.com/excel-worksheet-functions/)
-   -   Add number before text that matches criteria (https://www.excelbanter.com/excel-worksheet-functions/186418-add-number-before-text-matches-criteria.html)

Carole

Add number before text that matches criteria
 
A1 = 1 A
B1 = 1.5 S
3 A
A2 = 4.25 S
B2 = 8 S

I have the following formula to look for text within a range of cells and
add the number before the text.
=SUM(IF(ISNUMBER(SEARCH("A",$A1:$A2)),--SUBSTITUTE($A1:$A2,"
"&IF(RIGHT($A1:$A2)="A","A",""),"")))

This works great when there is only one instance of text within the cell.
When I have more than one instance of text seperated by ALT Tab, I get ###
error. I need to find the text that meets the criteria (A or S) and add the
number before that text.

What do I need to add or change in my formula to look for the "A" in B1 and
add 3 to my total?


ryguy7272

Add number before text that matches criteria
 
Here is one option:
Function ExtractNumber(rCell As Range) As Double
Dim X As Long
For X = 1 To Len(rCell.Value)
If Mid$(rCell.Value, X, 1) Like "*[0-9.]" Then
ExtractNumber = Val(Mid$(rCell.Value, X))
Exit For
End If
Next
End Function

Extract the numbers and then sum the results.

Similar, using a compound function:
=LOOKUP(99^99,--MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"01234567 89")),ROW(INDIRECT("1:256"))))


Regards,
Ryan--

--
RyGuy


"Carole" wrote:

A1 = 1 A
B1 = 1.5 S
3 A
A2 = 4.25 S
B2 = 8 S

I have the following formula to look for text within a range of cells and
add the number before the text.
=SUM(IF(ISNUMBER(SEARCH("A",$A1:$A2)),--SUBSTITUTE($A1:$A2,"
"&IF(RIGHT($A1:$A2)="A","A",""),"")))

This works great when there is only one instance of text within the cell.
When I have more than one instance of text seperated by ALT Tab, I get ###
error. I need to find the text that meets the criteria (A or S) and add the
number before that text.

What do I need to add or change in my formula to look for the "A" in B1 and
add 3 to my total?


Carole

Add number before text that matches criteria
 
Maybe I wasn't explicit enough.

I need to add all instances of "A" or "S" (not both) on a one line range of
cells. My formula needs to give me a total of 4 when I search for "A" and
1.5 when I search for "S". This formula will be copied in several cells to
give me a total for all instances of the criteria in the range I am totaling.

"ryguy7272" wrote:

Here is one option:
Function ExtractNumber(rCell As Range) As Double
Dim X As Long
For X = 1 To Len(rCell.Value)
If Mid$(rCell.Value, X, 1) Like "*[0-9.]" Then
ExtractNumber = Val(Mid$(rCell.Value, X))
Exit For
End If
Next
End Function

Extract the numbers and then sum the results.

Similar, using a compound function:
=LOOKUP(99^99,--MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"01234567 89")),ROW(INDIRECT("1:256"))))


Regards,
Ryan--

--
RyGuy


"Carole" wrote:

A1 = 1 A
B1 = 1.5 S
3 A
A2 = 4.25 S
B2 = 8 S

I have the following formula to look for text within a range of cells and
add the number before the text.
=SUM(IF(ISNUMBER(SEARCH("A",$A1:$A2)),--SUBSTITUTE($A1:$A2,"
"&IF(RIGHT($A1:$A2)="A","A",""),"")))

This works great when there is only one instance of text within the cell.
When I have more than one instance of text seperated by ALT Tab, I get ###
error. I need to find the text that meets the criteria (A or S) and add the
number before that text.

What do I need to add or change in my formula to look for the "A" in B1 and
add 3 to my total?


Carole

Add number before text that matches criteria
 
Those totals will be for line one. Line 2 will be 12.25 for "S".

"Carole" wrote:

Maybe I wasn't explicit enough.

I need to add all instances of "A" or "S" (not both) on a one line range of
cells. My formula needs to give me a total of 4 when I search for "A" and
1.5 when I search for "S". This formula will be copied in several cells to
give me a total for all instances of the criteria in the range I am totaling.

"ryguy7272" wrote:

Here is one option:
Function ExtractNumber(rCell As Range) As Double
Dim X As Long
For X = 1 To Len(rCell.Value)
If Mid$(rCell.Value, X, 1) Like "*[0-9.]" Then
ExtractNumber = Val(Mid$(rCell.Value, X))
Exit For
End If
Next
End Function

Extract the numbers and then sum the results.

Similar, using a compound function:
=LOOKUP(99^99,--MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"01234567 89")),ROW(INDIRECT("1:256"))))


Regards,
Ryan--

--
RyGuy


"Carole" wrote:

A1 = 1 A
B1 = 1.5 S
3 A
A2 = 4.25 S
B2 = 8 S

I have the following formula to look for text within a range of cells and
add the number before the text.
=SUM(IF(ISNUMBER(SEARCH("A",$A1:$A2)),--SUBSTITUTE($A1:$A2,"
"&IF(RIGHT($A1:$A2)="A","A",""),"")))

This works great when there is only one instance of text within the cell.
When I have more than one instance of text seperated by ALT Tab, I get ###
error. I need to find the text that meets the criteria (A or S) and add the
number before that text.

What do I need to add or change in my formula to look for the "A" in B1 and
add 3 to my total?



All times are GMT +1. The time now is 07:09 PM.

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