Попробуйте это и дайте мне знать, если он работает для вас .. Это даст вам результаты, показанные на изображении.
Sub SerialCode()
Dim ws As Worksheet
Dim startOf As Long, endOf As Long, data 'startOf and endOf are Long for >5 digits.
Dim lastRow As Long, currentRow As Long
Dim dataRange As Range, c As Range
Set ws = ThisWorkbook.Sheets(1)
ws.Range("E2", ws.Cells(ws.Rows.Count, "E").End(xlUp)).Clear
ws.Range("F2", ws.Cells(ws.Rows.Count, "F").End(xlUp)).Clear
lastRow = 2
Set dataRange = ws.Range("A2", ws.Cells(ws.Rows.Count, "A").End(xlUp))
For Each c In dataRange
If c.Value <> "" Then
currentRow = c.Row
startOf = CLng(ws.Range("A" & currentRow).Value)
endOf = CLng(ws.Range("B" & currentRow).Value) + 1
If endOf <> 1 And startOf < endOf Then 'This will stop Overflow errors from occuring accidently
data = ws.Range("C" & currentRow).Value
Do While startOf <> endOf
ws.Range("E" & lastRow).Value = startOf
ws.Range("F" & lastRow).Value = data
startOf = startOf + 1
lastRow = lastRow + 1
Loop
Else: MsgBox "Ending Serial Number missing or is less than starting Serial Number on row " _
& c.Row, vbCritical, "Missing Data"
End If
End If
Next c
End Sub
http://stackoverflow.com/questions/20143262/excel-sequential-numbers-specified-start-and-end-values-shift-column-data-d – eka24
Я получил код с этого сайта, близок к тому, что я хочу, но старые серийные номера продолжают повторяться в любое время, когда я запускаю новые серийные номера. Второй код «Sub sof20143262Serial_numbers()» – eka24
Можете ли вы показать изображение того, чего вы пытаетесь достичь или что-то еще? Я просто не знаю, как вам помочь. [Это ответ] (http://stackoverflow.com/questions/39360611/vba-code-to-auto-serial-number-in-column-a-after -my-userform-added-data-in-col/39376327 # 39376327), который я сделал для тех, у кого возник вопрос о создании серийных номеров со строками, возможно, вы можете адаптировать его для удовлетворения ваших потребностей или описать, какие его части не может работать для вас. – Tyeler