我是个菜鸟,所以请耐心等待我。 我有一个工作簿,B列包含格式为“V000001 ... V000999”的ID列表,每行1个这些不会改变并保持静态。 工作表中可能有100-1000行,每个V#都是唯一的。
每个独特的V#都有4个结果中的一个我需要放入D列。 我使用搜索V000001的宏录制器创建了一个宏,然后移动了2个单元并输入“NA”,没什么大不了的。
V000002(或顺序排列下一行)可能不需要任何答案,或者可能需要“NF”。
以下是宏录制器执行此操作的简单代码:
Cells.Find(what:="V0007921", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(0, 4).Range("A1").Select
ActiveCell.FormulaR1C1 = "NA"
ActiveCell.Offset(0, 2).Range("A1").Select
ActiveCell.FormulaR1C1 = "Site Responsibility"
ActiveCell.Offset(0, 1).Range("A1").Select
最终发生的事情是我的宏块中有超过100次以上的块,每次V#都在变化,这样效率不高,而且还会导致宏大小超过允许的最大值。
我知道哪个V#应该在D栏中收到“NA”,我也知道哪个V#应该在D列中收到“NF”。 有没有办法调用文本文件或在VBCode中定义V#的NA和NF列表并让宏有效地解析它?
我希望上面有意义,感谢任何帮助。
答案 0 :(得分:0)
您可以将搜索/更新包装在Sub中,并为每个值调用它。更好的是你可以从一张纸上的列表中驱动它。
例如:
UpdateValues "V0007921", "NA", "Site Responsibility"
子:
sub UpdateValues(ID,status,notes)
dim f as range
Set f = Activesheet.columns(2).Find(what:=ID, LookIn:=xlValues, _
LookAt:=xlPart) 'xlWhole?
if not f is nothing then
f.Offset(0, 4).value = status
f.Offset(0, 2).value = notes
end if
end sub