• Status: Solved
• Priority: Medium
• Security: Public
• Views: 312

# 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
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
``````

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
0
jmac001
• 3
• 2
2 Solutions

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

Commented:
In Line 17 change:
MaxN = A(0)
to:
MaxN=StoreN + 1

and I think you will have it.
0

Author Commented:
Thank you that resolved the issue.
0

Commented:
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

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

or
MaxN=StoreN + 1

gowflow
0

Commented:
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.

## Featured Post

• 3
• 2
Tackle projects and never again get stuck behind a technical roadblock.