我是否可以根据特定的标题字符串选择范围?

问题描述 投票:0回答:1

我有一些工作代码可以找到列'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
excel vba excel-vba switch-statement range
1个回答
0
投票

假设您的“标题”行是第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)的变量,然后使用变量来找到目标并做事。

© www.soinside.com 2019 - 2024. All rights reserved.