Excel VBA : 为每一行自动生成唯一编号

Excel VBA : Auto Generating Unique Number for each row

我需要用从某个值(比如 1000)开始的唯一数字自动填充行。

我使用的公式是:

=IF(B2<>"",COUNTA($B:B2)+999,"")

删除值之前我的excel是这样的:

Test_Case_Id    Name
1000             a
1001             b
1002             c

删除中间一行后变成:

Test_Case_Id    Name
1000             a
1001             c

预期结果:

Test_Case_Id    Name
1000             a
1002             c

请帮帮我。

谢谢, 韦韦克

Sub abc()
Dim a As Integer
Dim b As Integer
Dim i As Integer
Dim z As Integer

i = 1
Set sh = ThisWorkbook.Sheets("Sheet1") 'instead of sheet1 you can add name of your sheet
Dim k As Long
k = 2
Set rn = sh.UsedRange
k = rn.Rows.Count

Cells(1, 1).Value = 1001


Do Until i = k

b = (Cells(i, 1).Value)
a = b + 1
i = i + 1

Cells(i, 1).Value = a

Loop
End Sub

不确定您是否需要宏。您可以将此宏添加到您的文件中。 即使你删除了单元格,一旦你再次运行宏,当前单元格的值将是上面单元格的值加一,所以一切都会根据系列。谢谢

您用 VBA 标记,但您没有使用 VBA。计算行数或使用当前行号的公式将始终在 sheet re-calculcates.

时更新

为了实现您所描述的,您确实需要 VBA。一个简单的 worksheet change 事件就可以做到。按照

的思路思考
Private Sub Worksheet_Change(ByVal Target As Range)
Dim maxNumber
If Not Intersect(Target, Range("B:B")) Is Nothing Then
' don't run when more than one row is changed
    If Target.Rows.Count > 1 Then Exit Sub
' if column A in the current row has a value, don't run
    If Cells(Target.Row, 1) > 0 Then Exit Sub
' get the highest number in column A, then add 1 and write to the
' current row, column A
    maxNumber = Application.WorksheetFunction.Max(Range("A:A"))
    Target.Offset(0, -1) = maxNumber + 1
End If
End Sub

复制代码,right-click sheet 选项卡,select "view code" 并粘贴到代码 window 中。

这是删除 ID 为 1002 的行之前和之后的屏幕截图:

如果您使用以下内容创建一个唯一 ID 会怎样#

=TEXT(NOW(),"YYYYMMDD-") & TEXT(1,"0000")

20210728-0001 任务 0001 20210728-0002 任务 0002 20210728-0003 任务 0003

但是现在需要删除 0002 项

如何才能将唯一 ID # 保留在相关任务中

20210728-0001 任务 0001 20210728-0003 任务 0003