所以我头脑中的是一个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)。
答案 0 :(得分:0)
按照承诺回答我自己的问题。我对VBA很新,所以我确信有更优雅/更快的方式来做这个,并且仍然有兴趣看看它是什么。
Sub CreateID()
Dim rng As Range
Dim cell As Range
Dim firstcol As Range
Dim ID As Integer
ID = 1
counter = 1
Set rng = Range("B4:O100")
Set firstcol = Range("B4:B100")
For Each c In firstcol
rng(counter, 14) = ID
counter = counter + 1
If c = "C" Then
ID = ID + 1
End If
Next c
End Sub