【发布时间】:2019-01-08 20:33:57
【问题描述】:
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,所以我们在UNIQREF列中为所有ABC123 S/N写了30。
同样,我们会为所有 DEF456 S/N 写 20,为所有 HIJ789 S/N 写 30。
到目前为止,这是我的代码:
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 S/N 写入“20”,除了最后一个,然后没有继续到下一个 S/N“组”...宏继续“计算" 虽然(超长,因为该表目前是 900 行,但预计会增长到大约 4000 行)..
有什么技巧可以完成这项工作吗?
谢谢!
【问题讨论】: