【问题标题】:AutoIncrement ID Number (Works with Sorting)自动增量 ID 号(与排序一起使用)
【发布时间】:2018-08-01 14:12:44
【问题描述】:

早安,

我正在构建一个表,我想为每个条目分配一个唯一的 ID 号,该 ID 号会随着新值输入到表中而自动递增。这是一个提供视觉效果的示例表:

+----+------------+-----------+
| ID | First Name | Last Name |
+----+------------+-----------+
|  1 | John       | Smith     |
|  2 | Steve      | Wozniak   |
|  3 | Steve      | Jobs      |
+----+------------+-----------+

在上表中,如果我输入第 4 个人,我希望发生的是自动生成 ID(在本例中为 4)。我尝试了一个单元格公式,例如:

=Row([@ID])-1

这一直有效,直到您对表格进行排序,在这种情况下,ID 号都被打乱了。我想计算行号应该是多少,然后保持该值不变。有什么想法吗?

【问题讨论】:

  • 您将需要 vba 为插入分配新编号,以便该值保持静态。公式是实时的,在排序时不会保留值。
  • 我想可能是这样。感谢您的快速回复!
  • 根据上下文,您可以使用 MS 访问表来存储您的数据,它有一个自动编号数据类型,它有一个额外的优点是删除分配的 ID 不会被重新使用(在 VBA这可能需要一些努力)。您还可以从 Excel 创建到表的连接。

标签: excel excel-formula


【解决方案1】:

如果你想要一个静态增量键,你应该在你的输出工作表中使用这样的代码

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 2 Then
    Target.Offset(0, -1).Value = Target.Row - 1
End If

End Sub

如果您只想要一个实际上不会基于前一个键递增的唯一键,您可以在 A2 单元格中使用类似 =SUM(CODE(MID(B2&C2,ROW(INDIRECT("1:"&LEN(B2&C2))),1))) 的公式(以 CSE 结尾)并下拉。但是,如果您过多地扩展公式,则会影响工作表的性能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-01
    • 2023-03-15
    • 2022-09-29
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多