Select the first number/numbers in a cell input into another colum

S

Sue

I have a description cell that has variable alphanumeric characters. the
first one to two numbers I would like to copy to another column for the size
of the description
i.e. AA_NAAAa NNN AA N. The number I want is the first number unless the
description shows AANNANN NNNN aAa n, I would want the first two numbers.
these numbers indicate the size of the material. I don't know if a macro
and/or a function would be the best way to go.
 
G

Gary''s Student

This follows the following rule:

If the third character is an underscore, return the fourth character as a
number.
If the third character is a number, return the third and fourth characters
as a number:

=IF(MID(A1,3,1)="_",MID(A1,4,1),MID(A1,3,2))
 
S

Sue

My example wasn't clear enough. if description begins with CV_ show left
digits 4 and 5 i.e.CV 45aa nnn aaa etc, If description begins with VAA shw
left digits 4 and 5 else show 0. i.e. VAA05X05 NNNN aaaann nn etc.
 
G

Gary''s Student

Still not clear. Please post several examples of the input data and along
side the desired numeric output.
 
G

Gary''s Student

This is much more general. The UDF will return the first one or two digits
in any string:

Function numout(r As Range) As Integer
Dim v As String
v = r.Value
numout = 0
j = 1
For i = 1 To Len(v)
dig = Mid(v, i, 1)
If IsNumeric(dig) Then
numout = numout * j + dig
j = j + 9
End If
If j > 10 Then Exit Function
Next
End Function
 
R

Ron Rosenfeld

I have a description cell that has variable alphanumeric characters. the
first one to two numbers I would like to copy to another column for the size
of the description
i.e. AA_NAAAa NNN AA N. The number I want is the first number unless the
description shows AANNANN NNNN aAa n, I would want the first two numbers.
these numbers indicate the size of the material. I don't know if a macro
and/or a function would be the best way to go.

If there will be a maximum of two numbers in the first group of numbers, then:

=LOOKUP(9.9E+307,--MID(A1,MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},A1&"0123456789")),
ROW(INDIRECT("1:"&LEN(A1)))))

If there could be more than two numbers, but you only want to return the first
two, then:

=LEFT(LOOKUP(9.9E+307,--MID(A1,MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},
A1&"0123456789")),ROW(INDIRECT("1:"&LEN(A1))))),2)

or, to return the value as numeric rather than text:

=--LEFT(LOOKUP(9.9E+307,--MID(A1,MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},
A1&"0123456789")),ROW(INDIRECT("1:"&LEN(A1))))),2)
--ron
 

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