所以我脑子里有一个 excel 文件,它有几十万行,由一个没有分析/关系数据库概念的程序员创建。该文件实质上包含三个单独的表(A、B 和 C),每个表都有自己的一组字段,所有这些表都被混合到一个庞大的工作表中。
每个客户的所有记录都按位置分组,而不是分配一个键,并且每行所属的表在“表”列中标记为 A、B 或 C。每条记录基本上如下所示:
Table Field 1 Field 2 .......
A X X
B X X
B X X
B X X
C X X
每条记录总是最多有一个 A 和一个 C。不是每条记录都有 A 行,但总是有一个 C。新记录总是在每个 C 行之后开始。VB 可能不是该任务的最佳选择,但我暂时只想获得一个临时解决方案。到目前为止,这是我对代码的尝试(表指示符在 B 列中,我想将 ID 写入 O 列):
Sub CreateID()
Dim rng As Range
Dim cell As Range
Dim lastcol As Range
Dim firstcol As Range
Dim ID As Integer
ID = 1
Set rng = Range("B4:O100")
Set firstcol = Range("B4:B100")
Set lastcol = Range("O4:O100")
For Each cell In rng
For Each c In firstcol
With lastcol
lastcol.Value = ID
End With
If c.Value = "C" Then
ID = ID + 1
End If
Next c
Next cell
End Sub
正如您所知道的,您是否比我更了解 VBA,这样做是将 o 列中每个单元格的值设置为 ID,并且每次 ID 增加 1 时都会继续更改每个单元格的值。此外,循环似乎没有结束(在 ID 超过 1000 后,我 ctrl+break'd)。