我有一些工作代码可以找到列'R',然后根据'R'中的值进行迭代,并替换不同列中的值(也经过硬编码)。我想让脚本减少对列放置的依赖。
我已经找到并尝试了一些选项,但仍未找到合适的解决方案。我觉得我需要使用set,但不知道如何替换Select Case(“ R”&i).Value和其他用i引用Range的区域。理想情况下,我可以替换“ T”,“ R”,“ F”和“ N”。
赞赏朝正确方向的任何推动。
Sub BackfillUpdate()
Dim LastRow As Long
Dim i As Long
LastRow = Range("T" & Rows.Count).End(xlUp).Row
For i = 2 To LastRow
Select Case Range("R" & i).Value
Case "Text1"
Range("F" & i).Value = "Example1"
Case "Text2"
Range("N" & i).Value = "Example2"
Case "Text3", "Text4"
Range("N" & i).Value = "Example3"
End Select
Next i
End Sub
假设您的“标题”行是第1行,则可以执行与LastRow
变量等效的列,并通过递增列的范围进行循环。
类似:
Sub BackfillUpdate()
Dim LastColumn As Long
Dim i As Long
LastColumn = Cells(1, Columns.Count).End(xlToLeft).Column
For i = 2 To LastColumn
Select Case Cells(1, i).Value 'Starting from "B1" and moving along columns until it finds your value.
Case "Text1"
Range("F" & i).Value = "Example1"
Case "Text2"
Range("N" & i).Value = "Example2"
Case "Text3", "Text4"
Range("N" & i).Value = "Example3"
End Select
Next i
End Sub
如果Case
范围是您要分配的值,也需要提高动态性,请考虑像上面那样循环,并为每个目标列设置Column
编号(即-i
)的变量,然后使用变量来找到目标并做事。