Remove Text From AlphaNumeric

B

Bam

Hi All,

I have a colmun of Codes, of varying lengths that contains Letters at the
end of each Code.

The letters range from 1 single letter up to a word, again of varying lengths.

I need to strip out all alpha letters and retain only the numeric numbers.

Either a fomula or Macro.

Many Thanks,

Bam.
 
R

Ron Rosenfeld

Hi All,

I have a colmun of Codes, of varying lengths that contains Letters at the
end of each Code.

The letters range from 1 single letter up to a word, again of varying lengths.

I need to strip out all alpha letters and retain only the numeric numbers.

Either a fomula or Macro.

Many Thanks,

Bam.

=LOOKUP(1E+307,--LEFT(A1,ROW(INDIRECT("1:99"))),
LEFT(A1,ROW(INDIRECT("1:99"))))

Change the "99" to some value that will be longer than your longest anticipated
number.

--ron
 
G

Gary''s Student

How about this simple UDF:

Public Function Numerals(rng As Range) As String
'
' gsnuxx
'
Dim sStr As String, i As Long, sStr1 As String
Dim sChar As String
sStr = rng.Value
For i = 1 To Len(sStr)
sChar = Mid(sStr, i, 1)
If sChar Like "[0-9]" Then
sStr1 = sStr1 & sChar
End If
Next
Numerals = sStr1
End Function
 
R

Ron Rosenfeld

How about this simple UDF:

Public Function Numerals(rng As Range) As String
'
' gsnuxx
'
Dim sStr As String, i As Long, sStr1 As String
Dim sChar As String
sStr = rng.Value
For i = 1 To Len(sStr)
sChar = Mid(sStr, i, 1)
If sChar Like "[0-9]" Then
sStr1 = sStr1 & sChar
End If
Next
Numerals = sStr1
End Function

That should work OK so long as there are numerals after the initial set of
numbers.

For example: 123ABC6GH

Your UDF --> 1236 and I suspect the OP would probably want 123
--ron
 
R

Rick Rothstein

How about this simple UDF:
Public Function Numerals(rng As Range) As String
'
' gsnuxx
'
Dim sStr As String, i As Long, sStr1 As String
Dim sChar As String
sStr = rng.Value
For i = 1 To Len(sStr)
sChar = Mid(sStr, i, 1)
If sChar Like "[0-9]" Then
sStr1 = sStr1 & sChar
End If
Next
Numerals = sStr1
End Function

That should work OK so long as there are numerals after the initial set of
numbers.

For example: 123ABC6GH

Your UDF --> 1236 and I suspect the OP would probably want 123

How about this real simple UDF for that condition...

Public Function Numerals(Rng As Range) As Variant
Numerals = Val(Rng.Value)
End Function
 
R

Ron Rosenfeld

How about this real simple UDF for that condition...

Public Function Numerals(Rng As Range) As Variant
Numerals = Val(Rng.Value)
End Function

Now the OP has both a VBA and a worksheet function solution.
--ron
 
R

Rick Rothstein

See http://www.ozgrid.com/VBA/ExtractNum.htm
which can handle Decimal and negative values, or not.

Given the OP wants to grab the number which is located at the beginning of
the text, here is a shorter UDF that has the same functionality as your UDF
does for this situation...

Public Function Numerals(Rng As Range, Optional Take_decimal As Boolean, _
Optional Take_negative As Boolean) As Double
Numerals = Val(Rng.Value)
If Not Take_decimal Then Numerals = Replace(Numerals, ".", "")
If Not Take_negative Then Numerals = Replace(Numerals, "-", "")
End Function
 
R

Rick Rothstein

I don't think you need to concatenate the "0" onto the front of the MID
function which means you can also remove a couple of parentheses. I believe
this will work...

=LOOKUP(99^99,--MID(A1,1,ROW($1:$10000)))

You can save two additional characters by using the LEFT function instead of
the MID function...

=LOOKUP(99^99,--LEFT(A1,ROW($1:$1000)))
 
G

Gary''s Student

Very Nice!!
--
Gary''s Student - gsnu201002


Rick Rothstein said:
How about this simple UDF:

Public Function Numerals(rng As Range) As String
'
' gsnuxx
'
Dim sStr As String, i As Long, sStr1 As String
Dim sChar As String
sStr = rng.Value
For i = 1 To Len(sStr)
sChar = Mid(sStr, i, 1)
If sChar Like "[0-9]" Then
sStr1 = sStr1 & sChar
End If
Next
Numerals = sStr1
End Function

That should work OK so long as there are numerals after the initial set of
numbers.

For example: 123ABC6GH

Your UDF --> 1236 and I suspect the OP would probably want 123

How about this real simple UDF for that condition...

Public Function Numerals(Rng As Range) As Variant
Numerals = Val(Rng.Value)
End Function
 
J

Jacob Skaria

You are right.
--
Jacob (MVP - Excel)


Rick Rothstein said:
I don't think you need to concatenate the "0" onto the front of the MID
function which means you can also remove a couple of parentheses. I believe
this will work...

=LOOKUP(99^99,--MID(A1,1,ROW($1:$10000)))

You can save two additional characters by using the LEFT function instead of
the MID function...

=LOOKUP(99^99,--LEFT(A1,ROW($1:$1000)))

--
Rick (MVP - Excel)




.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top