Я делаю автоматический продукт SKU создатель таблицы Excel. У меня проблема: программа делает SKU в зависимости от опций, выбранных из выпадающего списка, и добавляет один номер на каждый выбранный элемент списка. Мне удалось заставить это работать, но последние 4 цифры в SKU - это уникальный номер для каждого элемента. Создание уникальных номеров - вот где у меня проблемы. У меня есть номера SKU, перечисленные в таблице

Программа добавляет новый SKU внизу таблицы. После выбора из списков есть пять чисел, например 01123
. Программа должна проверить, что является следующим «свободным» порядковым номером в числах, которые начинаются с тех же 5 цифр. Как будто уже 011230001
и следующий SKU будет автоматически ассоциирован с 011230002
, а если уже есть 011330001
, он будет автоматически ассоциирован с 011330002
. Таким образом, каждый элемент имеет уникальный SKU. Как мне это сделать?
Код для получения первых двух чисел:
Sub kopioi1()
If Range("A2") = "Tietokoneet" Then
eRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
Cells(eRow, 1).Value = "01"
ElseIf Range("A2") = "Komponentit" Then
eRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
Cells(eRow, 1).Value = "02"
ElseIf Range("A2") = "Oheislaite" Then
eRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
Cells(eRow, 1).Value = "03"
ElseIf Range("A2") = "Ohjelmisto" Then
eRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
Cells(eRow, 1).Value = "04"
ElseIf Range("A2") = "Verkko" Then
eRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
Cells(eRow, 1).Value = "05"
ElseIf Range("A2") = "Mobiililaite" Then
eRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
Cells(eRow, 1).Value = "06"
ElseIf Range("A2") = "Tarvikkeet" Then
eRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
Cells(eRow, 1).Value = "07"
ElseIf Range("A2") = "Palvelu" Then
eRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
Cells(eRow, 1).Value = "08"
End If
End Sub
Третий номер:
Sub kopioi2()
If Range("B2") = "Kannettavat" Then
Cells.Find(What:="01", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=True).Activate
ActiveCell.Value = ActiveCell.Value & "1"
ElseIf Range("B2") = "Pöytäkoneet" Then
Cells.Find(What:="01", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=True).Activate
ActiveCell.Value = ActiveCell.Value & "2"
ElseIf Range("B2") = "Käytetyt" Then
Cells.Find(What:="01", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=True).Activate
ActiveCell.Value = ActiveCell.Value & "3"
End If
End Sub
Четвертый номер:
Sub kopioi3()
If Range("C2") = "_13" Then
Cells.Find(What:="011", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=True).Activate
ActiveCell.Value = ActiveCell.Value & "1"
ElseIf Range("C2") = "_14" Then
Cells.Find(What:="011", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=True).Activate
ActiveCell.Value = ActiveCell.Value & "2"
ElseIf Range("C2") = "_15.6" Then
Cells.Find(What:="011", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=True).Activate
ActiveCell.Value = ActiveCell.Value & "3"
ElseIf Range("C2") = "_17" Then
Cells.Find(What:="011", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=True).Activate
ActiveCell.Value = ActiveCell.Value & "4"
ElseIf Range("C2") = "Yrityskannettavat" Then
Cells.Find(What:="011", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=True).Activate
ActiveCell.Value = ActiveCell.Value & "5"
End If
End Sub
Пятое число и последние четыре цифры:
Sub kopioi4()
Dim cell As Range
Dim bottomA As Integer
Dim data_text As String
bottomA = Range("a" & Rows.Count).End(xlUp).Row
Dim rng As Range
Set rng = Range("A1:A" & bottomA)
If Range("D2") = "Acer" Then
For Each cell In rng
If Len(cell) = 4 Then
cell.Value = cell.Value & "1"
End If
Next cell
ElseIf Range("D2") = "Apple" Then
For Each cell In rng
If Len(cell) = 4 Then
cell.Value = cell.Value & "2"
End If
Next cell
ElseIf Range("D2") = "ASUS" Then
For Each cell In rng
If Len(cell) = 4 Then
cell.Value = cell.Value & "3"
End If
Next cell
ElseIf Range("D2") = "Fujitsu" Then
For Each cell In rng
If Len(cell) = 4 Then
cell.Value = cell.Value & "4"
End If
Next cell
ElseIf Range("D2") = "HP" Then
For Each cell In rng
If Len(cell) = 4 Then
cell.Value = cell.Value & "5"
End If
Next cell
ElseIf Range("D2") = "Lenovo" Then
For Each cell In rng
If Len(cell) = 4 Then
cell.Value = cell.Value & "6"
End If
Next cell
ElseIf Range("D2") = "Samsung" Then
For Each cell In rng
If Len(cell) = 4 Then
cell.Value = cell.Value & "7"
End If
Next cell
End If
Range("A" & Cells.Rows.Count).End(xlUp).Select
data_text = ActiveCell.Value
Cells.Find(What:=data_text, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=True).Activate
ActiveCell.Value = ActiveCell.Value & "3"
End Sub