Excel VB宏搜索静态文本,然后移动2个单元格并输入数据

Excel VB宏搜索静态文本,然后移动2个单元格并输入数据,excel,vba,Excel,Vba,我是个笨蛋,所以请容忍我。 我有一个工作簿,B列包含格式为“V00001…V00999”的ID列表,每行1个,这些ID不会更改并保持静态。 表格中可能有100-1000行,每个V#都是唯一的 每个独特的V#都有四个结果中的一个,我需要将其放入D列。 我使用宏记录器创建了一个宏,搜索V00001,然后移动2个单元格,输入“NA”,没什么大不了的 V00002(或按顺序排列的下一个)可能不需要任何答案,或者可能需要一个“NF” 下面是宏录制器执行此操作的简单代码: Cells.Find(what:=

我是个笨蛋,所以请容忍我。 我有一个工作簿,B列包含格式为“V00001…V00999”的ID列表,每行1个,这些ID不会更改并保持静态。 表格中可能有100-1000行,每个V#都是唯一的

每个独特的V#都有四个结果中的一个,我需要将其放入D列。 我使用宏记录器创建了一个宏,搜索V00001,然后移动2个单元格,输入“NA”,没什么大不了的

V00002(或按顺序排列的下一个)可能不需要任何答案,或者可能需要一个“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列表,并让宏有效地解析它


我希望这在上面是有意义的,感谢您的帮助。

您可以将搜索/更新包装在一个子文件中,并为每个值调用它。更好的是,你可以从工作表上的列表中驱动它

例如:

分:


谢谢你,蒂姆,这周我会试试的。但我不确定上面的更新值“V0007921”、“NA”、“站点责任”的第一行,这是什么意思?您是否建议我在宏中为每个V#创建一条这样的线?
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