Sequential Unique ID Number

I had assistance writting the following code:

Sub Fill_ID()
Dim LastRow As Long, MaxN As Long, StoreN As String
Dim Rng As Range, A() As String, i As Integer
Worksheets("TEMPLATE").Activate
'Find ID column
For i = 1 To 50
    If Cells(1, i).Value = "TrackerNo" Then Exit For
Next i
If i = 50 Then
    MsgBox "TrackerNo column not found"
    Exit Sub
End If
ColN = i
LastRow = Cells(65536, ColN).End(xlUp).Row ' In Excel 2007 and later last row could be more then 65536
StoreN = Right(Cells(2, 1).Value, 3)
If LastRow = 1 Then
    MaxN = 1
Else
    A = Split(Cells(LastRow, ColN).Value, "-")
    StoreN = Right(Cells(LastRow, ColN).Value, 3)
    MaxN = A(0)
End If
MaxN = MaxN + 0
Do While Cells(LastRow + 1, 6).Value <> ""  'Fill cells where Column F is not empty
    StoreN = Right(Cells(LastRow + 1, 1).Value, 3) 'Get Store Number from column 1
    If MaxN < 999 Then                      
        Cells(LastRow + 1, ColN).Value = StoreN & "-" & Format(MaxN, "000")
        LastRow = LastRow + 1
        MaxN = MaxN + 1
    Else
        Exit Do
    End If
Loop
End Sub

Open in new window


Need additional help just noticed when additional rows of data are added the TrackerNo is not updating correctly.  If possible I would like to have the TrackerNo update sequentially.  Attaching sample you will see that the number jumps from 789-012 to
789-789 instead of 789-013.
EE-TrackerNo.xlsm
jmac001Asked:
Who is Participating?
 
gowflowConnect With a Mentor Commented:
What is the rule ? Just sequentially regardless of the data that is there ? as looking at the logic I see that it looks at the storenumber to build the sequence

So what do you want ?
gowflow
0
 
CompProbSolvConnect With a Mentor Commented:
In Line 17 change:
MaxN = A(0)
to:
MaxN=StoreN + 1

and I think you will have it.
0
 
jmac001Author Commented:
Thank you that resolved the issue.
0
Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

 
gowflowCommented:
Not so quick !!!
in appearance it give you the correct figure but the code should be

to change this line
MaxN = A(0)

into this line
MaxN = A(1) + 1

as it is taking the second part of the last sequential and adding 1 whereas by changing it to variable StoreN you may not always hit it correctly.

gowflow
0
 
gowflowCommented:
Looking at this again you can have both solutions
MaxN = A(1) + 1

or
MaxN=StoreN + 1

gowflow
0
 
CompProbSolvCommented:
Actually, goflow's solution is better.  His uses the characters after the "-" delimiter, regardless of how many there are.  My solution relied on the StoreN calculation, which assumes that the last three characters exactly contain the number.

To see the difference, change P10 from 789-009 to 789-09, delete P11 to the end, and run the macro.  With my solution you will get some odd results (double hyphens).  With goflow's solution you will get what you expect.

My solution works properly with proper data.  Goflow's is somewhat more fault-tolerant (at least for a missing digit).  I've not considered all of the other fault conditions  (e.g. non-numeric characters) and how the two solutions would differ.

I would suggest splitting the points.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.