我是一个VBA新手...感谢您的帮助 :)
我有一个像这样的表:
S/N UNIQREF REF OPE
ABC123 10 C1
ABC123 20 C2
ABC123 30 I1
ABC123 40 IM1
DEF456 10 C1
DEF456 20 I1
DEF456 30 DR1
HIJ789 10 C1
HIJ789 20 DR1
HIJ789 30 I1
HIJ789 40 XX1
...我需要填写UNIQREF列。
规则是:遍历我的S/N(序列号)列,只要它保持不变,查找“I1” OPE(操作)左侧的值,并在所有行中将其写入UNIQREF。
例如,我们取ABC123,在OPE中查找“I1”,看到它旁边(左侧)的值为30,因此我们为所有ABC123 S/N编写30个UNIQREF列。
同样,我们会为所有DEF456 S/N编写20,并为所有HIJ789 S/N编写30个UNIQREF。
到目前为止,这是我的代码:
Public Sub routine()
Dim gamWAL as Worksheet
Set gamWAL = ThisWorkbook.Sheets("gamWAL")
i = 3 'because data in my table starts on line 3, line 2 is columns titles and line 1 is comments. Also starts in Column B (my S/N column)...
Do While gamWAL.Cells(i, "B").Value <> "" 'i want the loop to stop at the when the S/N list is over
Do While gamWAL.Cells(i, "B").Value = gamWAL.Cells(i + 1, "B").Value
gamWAL.Cells(i, "E").Value = Application.WorksheetFunction.Index(gamWAL.Range("F" & i & ":G3000"), Application.WorksheetFunction.Match("I1", gamWAL.Range("G" & i & ":G3000"), 0), 1)
i = i + 1
Loop
Loop
End Sub
问题: 对于所有的ABC123序列号,它都写入了"20",除了最后一个,在下一组序列号之前停止了...尽管宏一直在 "计算"(因为表格目前有900行,但预计将增长到约4000行)。
有什么建议可以让它正常工作吗?
谢谢!