我要求从某个值(比如1000)开始使用唯一编号自动填充行。
工作表有2列。
当我在每行的第二列填写一个值时,第一列应自动填充。
我已经填满了3行(1000,1001,1002)。
现在,如果我删除自动生成值为1001的中间行,则最初值为1002的行会自动更新为1001.
但根据我的要求,该值应保持唯一(它应保持为1002)。
我使用的公式是:
=IF(B2<>"",COUNTA($B$2: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
请帮助我。
谢谢, Vevek
答案 0 :(得分:2)
您使用VBA标记,但您没有使用VBA。计算行数或使用当前行号的公式将始终在工作表重新计算时更新。
为了实现您所描述的内容,您确实需要VBA。一个简单的工作表更改事件应该这样做。按照
的思路思考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
复制代码,右键单击工作表选项卡,选择“查看代码”并粘贴到代码窗口中。
这是删除ID为1002的行之前和之后的屏幕截图:
答案 1 :(得分:0)
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
不确定您是否需要宏。您可以将此宏添加到您的文件中。 即使在删除单元格后,再次运行宏时,当前单元格值将是上述单元格的值加1,因此将根据系列进行删除。感谢
答案 2 :(得分:0)
如果您使用以下内容创建唯一 ID 会怎样#
=TEXT(NOW(),"YYYYMMDD-") & TEXT(1,"0000")
20210728-0001 任务 0001 20210728-0002 任务0002 20210728-0003 任务0003
但是现在需要删除 0002 项
唯一 ID # 如何保留在相关任务中
20210728-0001 任务 0001 20210728-0003 任务0003