ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Discussion (Misc queries) (https://www.excelbanter.com/excel-discussion-misc-queries/)
-   -   Extract a number(s) from a text string (https://www.excelbanter.com/excel-discussion-misc-queries/225082-extract-number-s-text-string.html)

Christopher770

Extract a number(s) from a text string
 

I have an single column of data (see below) that randomly has numbers
inserted at the beginning of the text. The database unfortunately cannot
be altered at this time, so I'm stuck. I need this data in two columns.
Obviusly "text to columns" won't work, or I wouldn't be asking for help.


Anyone have any suggestions?

57NORCROSS EAST
213DUBLIN
57NORCROSS WEST
48DOWNTOWN NORTH
26MCDONOUGH
48DOWNTOWN SOUTH
53NEWNAN
134BUFORD
135MACON
134SUWANEE
121FULTON INDUSTRIAL SOUTH
59LAWRENCEVILLE
1009AUSTELL
134DULUTH
130LITHIA SPRINGS
106ROSWELL
7WEST GEORGIA
123DAWSONVILLE
100CEDARTOWN
125MARIETTA SOUTH
154ROME
5HOOTCH[/i][/i]


--
Christopher770
------------------------------------------------------------------------
Christopher770's Profile: http://www.thecodecage.com/forumz/member.php?userid=188
View this thread: http://www.thecodecage.com/forumz/sh...ad.php?t=77789


Mike H

Extract a number(s) from a text string
 
Christopher.

To extract the numbers use

=LEFT(A1,LEN(LOOKUP(10^23,--MID(A1,MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},A1&"012345 6789")),ROW(INDIRECT("1:"&LEN(A1)))))))

and the text

=RIGHT(A1,LEN(A1)-LEN(LOOKUP(10^23,--MID(A1,MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},A1&"012345 6789")),ROW(INDIRECT("1:"&LEN(A1)))))))

Mike


"Christopher770" wrote:


I have an single column of data (see below) that randomly has numbers
inserted at the beginning of the text. The database unfortunately cannot
be altered at this time, so I'm stuck. I need this data in two columns.
Obviusly "text to columns" won't work, or I wouldn't be asking for help.


Anyone have any suggestions?

57NORCROSS EAST
213DUBLIN
57NORCROSS WEST
48DOWNTOWN NORTH
26MCDONOUGH
48DOWNTOWN SOUTH
53NEWNAN
134BUFORD
135MACON
134SUWANEE
121FULTON INDUSTRIAL SOUTH
59LAWRENCEVILLE
1009AUSTELL
134DULUTH
130LITHIA SPRINGS
106ROSWELL
7WEST GEORGIA
123DAWSONVILLE
100CEDARTOWN
125MARIETTA SOUTH
154ROME
5HOOTCH
[/i]


--
Christopher770
------------------------------------------------------------------------
Christopher770's Profile: http://www.thecodecage.com/forumz/member.php?userid=188
View this thread: http://www.thecodecage.com/forumz/sh...ad.php?t=77789

[/i]


Ron Coderre[_3_]

Extract a number(s) from a text string
 
With
A1 containing a text string beginning with numbers
this formula returns only the beginning numbers:
B1: =LOOKUP(99^99,--("0"&MID(A1,MIN(
SEARCH({0,1,2,3,4,5,6,7,8,9},A1&"0123456789")),ROW ($1:$10000))))

To return the text without those numbers
C1: =MID(A1,LEN(B1)+1,255)

If A1 contains: 57NORCROSS EAST
B1 returns: 57
C1 returns: NORCROSS EAST

Does that help?

Regards,

Ron Coderre
Microsoft MVP (Excel)

"Christopher770" wrote in message
...

I have an single column of data (see below) that randomly has numbers
inserted at the beginning of the text. The database unfortunately cannot
be altered at this time, so I'm stuck. I need this data in two columns.
Obviusly "text to columns" won't work, or I wouldn't be asking for help.


Anyone have any suggestions?

57NORCROSS EAST
213DUBLIN
57NORCROSS WEST
48DOWNTOWN NORTH
26MCDONOUGH
48DOWNTOWN SOUTH
53NEWNAN
134BUFORD
135MACON
134SUWANEE
121FULTON INDUSTRIAL SOUTH
59LAWRENCEVILLE
1009AUSTELL
134DULUTH
130LITHIA SPRINGS
106ROSWELL
7WEST GEORGIA
123DAWSONVILLE
100CEDARTOWN
125MARIETTA SOUTH
154ROME
5HOOTCH
[/i]


--
Christopher770
------------------------------------------------------------------------
Christopher770's Profile:
http://www.thecodecage.com/forumz/member.php?userid=188
View this thread: http://www.thecodecage.com/forumz/sh...ad.php?t=77789
[/i]


Sheeloo[_4_]

Extract a number(s) from a text string
 
This was proposed by Ashish Mathur
http://office.microsoft.com/en-us/ex...549011033.aspx

This will extract the first set of numbers in any string...
If you have strings with numbers in Col A then paste this in B1
=1*MID(A1,MATCH(TRUE,ISNUMBER(1*MID(A1,ROW($1:$9), 1)),0),COUNT(1*MID(A1,ROW($1:$9),1)))
and press CTRL-SHIFT-ENTER
(this will put {} around the formula as this is an ARRAY formula

and copy the formula down

"Christopher770" wrote:


I have an single column of data (see below) that randomly has numbers
inserted at the beginning of the text. The database unfortunately cannot
be altered at this time, so I'm stuck. I need this data in two columns.
Obviusly "text to columns" won't work, or I wouldn't be asking for help.


Anyone have any suggestions?

57NORCROSS EAST
213DUBLIN
57NORCROSS WEST
48DOWNTOWN NORTH
26MCDONOUGH
48DOWNTOWN SOUTH
53NEWNAN
134BUFORD
135MACON
134SUWANEE
121FULTON INDUSTRIAL SOUTH
59LAWRENCEVILLE
1009AUSTELL
134DULUTH
130LITHIA SPRINGS
106ROSWELL
7WEST GEORGIA
123DAWSONVILLE
100CEDARTOWN
125MARIETTA SOUTH
154ROME
5HOOTCH
[/i]


--
Christopher770
------------------------------------------------------------------------
Christopher770's Profile: http://www.thecodecage.com/forumz/member.php?userid=188
View this thread: http://www.thecodecage.com/forumz/sh...ad.php?t=77789

[/i]


joeu2004

Extract a number(s) from a text string
 
On Mar 21, 7:43 am, Christopher770
wrote:
I have an single column of data (see below) that randomly
has numbers inserted at the beginning of the text. [....]
I need this data in two columns.


I would write a macro. Are you interested in a VBA solution?

Alternatively, I would put the following formula into a parallel
column (say column D):

=MIN(FIND
({"A","B","C","D","E","F","G","H","I","J","K","L", "M","N","O","P","Q","R","S","T","U","V","W","X","Y ","Z"},A1&"ABCDEFGHIJKLMNOPQRSTUVWXYZ")-1))

In another parallel column (say column B), put:

=--LEFT(A1,D1-1)

In yet another parallel column (say column C), put:

=RIGHT(A1,LEN(A1)-D1+1)

If you want to "replace" the column of original data (column A in my
example), copy-and-paste-special-value the columns with the LEFT and
RIGHT formulas. Then delete the columns with the FIND formula and the
original data.

HTH.


----- original posting -----

On Mar 21, 7:43*am, Christopher770
wrote:
I have an single column of data (see below) that randomly has numbers
inserted at the beginning of the text. The database unfortunately cannot
be altered at this time, so I'm stuck. I need this data in two columns.
Obviusly "text to columns" won't work, or I wouldn't be asking for help.

Anyone have any suggestions?

57NORCROSS EAST
213DUBLIN
57NORCROSS WEST
48DOWNTOWN NORTH
26MCDONOUGH
48DOWNTOWN SOUTH
53NEWNAN
134BUFORD
135MACON
134SUWANEE
121FULTON INDUSTRIAL SOUTH
59LAWRENCEVILLE
1009AUSTELL
134DULUTH
130LITHIA SPRINGS
106ROSWELL
7WEST GEORGIA
123DAWSONVILLE
100CEDARTOWN
125MARIETTA SOUTH
154ROME
5HOOTCH
[/i]

--
Christopher770
------------------------------------------------------------------------
Christopher770's Profile:http://www.thecodecage.com/forumz/member.php?userid=188
View this thread:http://www.thecodecage.com/forumz/sh...ad.php?t=77789[/i]



joeu2004

Extract a number(s) from a text string
 
Slight improvement....

In one parallel column:

=--LEFT(A1,MIN(FIND
({"A","B","C","D","E","F","G","H","I","J","K","L", "M","N","O","P","Q","R","S","T","U","V","W","X","Y ","Z"},A1&"ABCDEFGHIJKLMNOPQRSTUVWXYZ"))-1)

In another parallel column:

=RIGHT(A1,LEN(A1)-LEN(B1))

Eliminates the need for a helper column with FIND formulas.


----- original posting -----

On Mar 21, 8:44*am, joeu2004 wrote:
On Mar 21, 7:43 am, Christopher770

wrote:
I have an single column of data (see below) that randomly
has numbers inserted at the beginning of the text. [....]
I need this data in two columns.


I would write a macro. *Are you interested in a VBA solution?

Alternatively, I would put the following formula into a parallel
column (say column D):

=MIN(FIND
({"A","B","C","D","E","F","G","H","I","J","K","L", "M","N","O","P","Q","R","*S","T","U","V","W","X"," Y","Z"},A1&"ABCDEFGHIJKLMNOPQRSTUVWXYZ")-1))

In another parallel column (say column B), put:

=--LEFT(A1,D1-1)

In yet another parallel column (say column C), put:

=RIGHT(A1,LEN(A1)-D1+1)

If you want to "replace" the column of original data (column A in my
example), copy-and-paste-special-value the columns with the LEFT and
RIGHT formulas. *Then delete the columns with the FIND formula and the
original data.

HTH.

----- original posting -----

On Mar 21, 7:43*am, Christopher770



wrote:
I have an single column of data (see below) that randomly has numbers
inserted at the beginning of the text. The database unfortunately cannot
be altered at this time, so I'm stuck. I need this data in two columns.
Obviusly "text to columns" won't work, or I wouldn't be asking for help..


Anyone have any suggestions?


57NORCROSS EAST
213DUBLIN
57NORCROSS WEST
48DOWNTOWN NORTH
26MCDONOUGH
48DOWNTOWN SOUTH
53NEWNAN
134BUFORD
135MACON
134SUWANEE
121FULTON INDUSTRIAL SOUTH
59LAWRENCEVILLE
1009AUSTELL
134DULUTH
130LITHIA SPRINGS
106ROSWELL
7WEST GEORGIA
123DAWSONVILLE
100CEDARTOWN
125MARIETTA SOUTH
154ROME
5HOOTCH
[/i]

--
Christopher770
------------------------------------------------------------------------
Christopher770's Profile:http://www.thecodecage.com/forumz/member.php?userid=188
View this thread:http://www.thecodecage.com/forumz/sh...ad.php?t=77789
[/i]


Pecoflyer[_232_]

Extract a number(s) from a text string
 

Hi Christopher and welcome to the board

I found this link 'converting strings to numbers -
microsoft.public.excel.worksheet.functions | Google Groups'
(http://tinyurl.com/cxknjs) which is a UDF to extract the first string
of digits in a string.
HTH


--
Pecoflyer

Cheers -
*'Membership is free' (http://www.thecodecage.com)* & allows file
upload -faster and better answers

*Adding your XL version* to your post helps finding solution faster
------------------------------------------------------------------------
Pecoflyer's Profile: http://www.thecodecage.com/forumz/member.php?userid=14
View this thread: http://www.thecodecage.com/forumz/sh...ad.php?t=77789


T. Valko

Extract a number(s) from a text string
 
Here's another one...

Array entered** :

=--LEFT(A1,MATCH(TRUE,ISERR(-MID(A1,ROW(INDIRECT("1:15")),1)),0)-1)

Note that this will return the number as a number. It assumes no number
string will be longer than 15 digits. Also note that Excel doesn't like
leading zeros with real numbers so this will strip off any leading zeros.

** array formulas need to be entered using the key combination of
CTRL,SHIFT,ENTER (not just ENTER). Hold down both the CTRL key and the SHIFT
key then hit ENTER.

For the text portion of the string... If there are leading zeros this won't
work properly.

Assuming the above formula is entered in D1.

=MID(A1,LEN(D1)+1,255)


--
Biff
Microsoft Excel MVP


"Christopher770" wrote in message
...

I have an single column of data (see below) that randomly has numbers
inserted at the beginning of the text. The database unfortunately cannot
be altered at this time, so I'm stuck. I need this data in two columns.
Obviusly "text to columns" won't work, or I wouldn't be asking for help.


Anyone have any suggestions?

57NORCROSS EAST
213DUBLIN
57NORCROSS WEST
48DOWNTOWN NORTH
26MCDONOUGH
48DOWNTOWN SOUTH
53NEWNAN
134BUFORD
135MACON
134SUWANEE
121FULTON INDUSTRIAL SOUTH
59LAWRENCEVILLE
1009AUSTELL
134DULUTH
130LITHIA SPRINGS
106ROSWELL
7WEST GEORGIA
123DAWSONVILLE
100CEDARTOWN
125MARIETTA SOUTH
154ROME
5HOOTCH
[/i]


--
Christopher770
------------------------------------------------------------------------
Christopher770's Profile:
http://www.thecodecage.com/forumz/member.php?userid=188
View this thread: http://www.thecodecage.com/forumz/sh...ad.php?t=77789
[/i]




Rick Rothstein

Extract a number(s) from a text string
 
One more method to add to the pile<g...

=LOOKUP(999999,--LEFT(A13,ROW($1:$99)))

The use of the 999999 assumes you will never have a leading number of one
million or more (if you could, then just make the 999999 a number larger
than your largest possible leading number you could ever have).

--
Rick (MVP - Excel)


"Christopher770" wrote in message
...

I have an single column of data (see below) that randomly has numbers
inserted at the beginning of the text. The database unfortunately cannot
be altered at this time, so I'm stuck. I need this data in two columns.
Obviusly "text to columns" won't work, or I wouldn't be asking for help.


Anyone have any suggestions?

57NORCROSS EAST
213DUBLIN
57NORCROSS WEST
48DOWNTOWN NORTH
26MCDONOUGH
48DOWNTOWN SOUTH
53NEWNAN
134BUFORD
135MACON
134SUWANEE
121FULTON INDUSTRIAL SOUTH
59LAWRENCEVILLE
1009AUSTELL
134DULUTH
130LITHIA SPRINGS
106ROSWELL
7WEST GEORGIA
123DAWSONVILLE
100CEDARTOWN
125MARIETTA SOUTH
154ROME
5HOOTCH
[/i]


--
Christopher770
------------------------------------------------------------------------
Christopher770's Profile:
http://www.thecodecage.com/forumz/member.php?userid=188
View this thread: http://www.thecodecage.com/forumz/sh...ad.php?t=77789
[/i]



joeu2004

Extract a number(s) from a text string
 
On Mar 22, 1:16 pm, "Rick Rothstein"
=LOOKUP(999999,--LEFT(A13,ROW($1:$99)))


A superior solution, IMHO. It might also be noted that the formula
assumes that the original text (A13) is no more than 99 characters.
Alternatively:

=LOOKUP(99999,--LEFT(A13,ROW(OFFSET($A$1,0,0,LEN(A13)))))

In either case, the right-hand portion of the original text can be
extracted with:

=RIGHT(A13,LEN(A13)-LEN(B13))

if the LOOKUP formula is in B13.


----- original posting -----

On Mar 22, 1:16*pm, "Rick Rothstein"
wrote:
One more method to add to the pile<g...

=LOOKUP(999999,--LEFT(A13,ROW($1:$99)))

The use of the 999999 assumes you will never have a leading number of one
million or more (if you could, then just make the 999999 a number larger
than your largest possible leading number you could ever have).

--
Rick (MVP - Excel)

"Christopher770" wrote in message

...





I have an single column of data (see below) that randomly has numbers
inserted at the beginning of the text. The database unfortunately cannot
be altered at this time, so I'm stuck. I need this data in two columns.
Obviusly "text to columns" won't work, or I wouldn't be asking for help..


Anyone have any suggestions?


57NORCROSS EAST
213DUBLIN
57NORCROSS WEST
48DOWNTOWN NORTH
26MCDONOUGH
48DOWNTOWN SOUTH
53NEWNAN
134BUFORD
135MACON
134SUWANEE
121FULTON INDUSTRIAL SOUTH
59LAWRENCEVILLE
1009AUSTELL
134DULUTH
130LITHIA SPRINGS
106ROSWELL
7WEST GEORGIA
123DAWSONVILLE
100CEDARTOWN
125MARIETTA SOUTH
154ROME
5HOOTCH
[/i]

--
Christopher770
------------------------------------------------------------------------
Christopher770's Profile:
http://www.thecodecage.com/forumz/member.php?userid=188
View this thread:http://www.thecodecage.com/forumz/sh...ad.php?t=77789
[/i]


Rick Rothstein

Extract a number(s) from a text string
 
See inline comments...

=LOOKUP(999999,--LEFT(A13,ROW($1:$99)))

A superior solution, IMHO.


Thanks!


It might also be noted that the formula assumes that the
original text (A13) is no more than 99 characters.


The text String can be longer and it won't matter as the number of digits at
the beginning is assumed to be no more than 6 digits long. As a matter of
fact, given that assumption, the formula could have been this instead...

=LOOKUP(999999,--LEFT(A13,ROW($1:$6)))

and it would work fine.


Alternatively:

=LOOKUP(99999,--LEFT(A13,ROW(OFFSET($A$1,0,0,LEN(A13)))))


I try to stay away from using OFFSET as it is a Volatile function. As I said
above, accounting for this is unnecessary for the reason I stated there; but
also, maybe more importantly, since we are returning an actual number
(rather than text), Excel won't support a number anywhere near as long as 99
digits, so accounting for a string longer than that is unnecessary. My use
of 99 was more out of habit (I like the repeating digits) than necessity.


In either case, the right-hand portion of the original text can
be extracted with:

=RIGHT(A13,LEN(A13)-LEN(B13))

if the LOOKUP formula is in B13.


I realize this is more a personal preference issue, but I would use one less
function call and do it this way...

=MID(A13,LEN(A13)+1,99)

again, recognizing that if the text in A13 **could** be longer than 99
characters, then the 99 would need to be increase (my choice would be to
make it 999 in that case).


--
Rick (MVP - Excel)


joeu2004

Extract a number(s) from a text string
 
On Mar 22, 3:21 pm, "Rick Rothstein"
wrote:
The text String can be longer and it won't matter
as the number of digits at the beginning is assumed
to be no more than 6 digits long.
[.... and]
Excel won't support a number anywhere near as long
as 99 digits


Good points! I wasn't thinking.



----- original posting -----

On Mar 22, 3:21*pm, "Rick Rothstein"
wrote:
See inline comments...

=LOOKUP(999999,--LEFT(A13,ROW($1:$99)))


A superior solution, IMHO.


Thanks!

It might also be noted that the formula assumes that the
original text (A13) is no more than 99 characters.


The text String can be longer and it won't matter as the number of digits at
the beginning is assumed to be no more than 6 digits long. As a matter of
fact, given that assumption, the formula could have been this instead...

=LOOKUP(999999,--LEFT(A13,ROW($1:$6)))

and it would work fine.

Alternatively:


=LOOKUP(99999,--LEFT(A13,ROW(OFFSET($A$1,0,0,LEN(A13)))))


I try to stay away from using OFFSET as it is a Volatile function. As I said
above, accounting for this is unnecessary for the reason I stated there; but
also, maybe more importantly, since we are returning an actual number
(rather than text), Excel won't support a number anywhere near as long as 99
digits, so accounting for a string longer than that is unnecessary. My use
of 99 was more out of habit (I like the repeating digits) than necessity.

In either case, the right-hand portion of the original text can
be extracted with:


=RIGHT(A13,LEN(A13)-LEN(B13))


if the LOOKUP formula is in B13.


I realize this is more a personal preference issue, but I would use one less
function call and do it this way...

=MID(A13,LEN(A13)+1,99)

again, recognizing that if the text in A13 **could** be longer than 99
characters, then the 99 would need to be increase (my choice would be to
make it 999 in that case).

--
Rick (MVP - Excel)




All times are GMT +1. The time now is 12:03 AM.

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