尝试使用VBA循环创build空间相关logging的密钥

所以我头上有一个excel文件,其中有一个由程序员创build的数十万行,没有分析/关系数据库的概念。 这个文件基本上包含三个独立的表格(A,B和C),每个表格都有自己的一组字段,全部被分成一个巨大的工作表。

每个客户的所有logging都按位置组合在一起,而每行所属的表在A,B或C的“表格”列中标记。每个logging基本如下所示:

Table Field 1 Field 2 ....... AXX BXX BXX BXX CXX 

每个logging总是最多有一个A和一个C. 每个logging都没有A的行,但总是有一个C,每个C行后总是有一个新的logging。 VB可能不是这项任务的最佳select,但我只想暂时获得临时解决scheme。 这是我迄今为止的代码尝试(表格指针在列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时,继续更改每个单元格的值。 此外,循环似乎并没有结束(我ctrl + break'd后,ID超过1000)。

按照承诺回答我自己的问题。 我对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