从Excel VBA中的一系列单元格中获取列x的单元格

时间:2016-05-07 16:36:18

标签: excel vba excel-vba

我有一个单元格区域,比方说:Range(“A1:D20”)存储在Range变量中。就我而言,范围实际上是一个命名范围。 E.g。

Set rngList = Range("LIST")

我正在尝试使用'for each'循环仅遍历第2列中的Cells。编辑:这是相对引用,而不是绝对:范围的第2列。

E.g。

for each rngCell in rngList.Columns(2)
   //Do stuff
next

.Columns(2)不起作用。有一种简单的方法可以做到这一点吗?

干杯

3 个答案:

答案 0 :(得分:4)

.Cells之后添加.Columns(2)

For Each rngCell In Range("LIST").Columns(2).Cells
   Debug.Print rngCell
Next

答案 1 :(得分:0)

您可以使用B列(高效)直接从现有范围创建另一个范围,或者您可以在执行操作之前检查现有范围中的每个单元格是否在第2列中:

方法1(创建衍生范围):

Sub method1()

    Dim rngList As Range
    Dim rngList2 As Range

    Set rngList = Range("LIST")

    Set rngList2 = Range("B" & rngList.Row, Range("B" & (rngList.Row + rngList.Rows.Count - 1)))

    For Each rngCell In rngList2
        rngCell.Value = "hey1"
    Next rngCell

End Sub

方法2(检查单元格是否在第2列中):

Sub method2()

    Dim rngList As Range

    Set rngList = Range("LIST")

    For Each rngCell In rngList
        If rngCell.Column = 2 Then
            rngCell.Value = "hey2"
        End If
    Next rngCell

End Sub

答案 2 :(得分:0)

试试这个

For Each rngCell In Intersect(rngList, rngList.Parent.Columns(2))
'   //Do stuff
Next