如何在与选定单元格相同的行上选择值范围?

时间:2016-12-07 14:00:35

标签: excel vba excel-vba

所以我使用搜索在Col1中找到一个值(如下图所示),一旦找到该单元格,我想选择该行中Col3及其上的所有项目都有值。

例如,如果我的搜索正在寻找val1,那么我想在数组中选择num1,num2和num3。

我有搜索工作来查找val的地址,但是我无法弄清楚如何获取Col3中的所有值以及非空的权利。

my excel example

2 个答案:

答案 0 :(得分:3)

这可能有所帮助:

Sub SelectNumbers()
    Dim foundCell As Range, lastNum As Integer, nums As Range, arr() as variant, i As Integer

    Set foundCell = ActiveCell
    lastNum = foundCell.Offset(0, 2).End(xlToRight).Column

    //Get range object
    Set nums = Range(Cells(foundCell.Row, 3), Cells(foundCell.Row, lastNum))

    Debug.Print nums.Address

    //Read as array
    arr = Range(Cells(foundCell.Row, 3), Cells(foundCell.Row, lastNum)).Value

    For i = 1 To UBound(arr, 2)
        Debug.Print arr(1, i)
    Next i
End Sub

我不确定您的代码如何定义您要搜索的单元格。在我的代码中,我使用ActiveCell作为代理。你需要适应这个。

我做了两个假设:

  1. 您的nums始终从第3列开始
  2. 您的nums始终是连续的,即nums
  3. 中没有散布的空白单元格

    我还展示了如何获取range对象或array。你决定你喜欢哪个。

答案 1 :(得分:0)

如果在Col2和Col3之间插入了一列,或者数据结构不同,那么您需要做的就是调整foundCell.Offset(row, column).End(xlToRight).Column

只是添加到Alex P的回答

  
      
  1. 您的nums始终是连续的,即没有空白的单元格散布在nums中
  2.   

如果Col3可以包含一些空位,如下所示:

empty values

Cells(4, Columns.Count).End(xlToLeft).Column这样的东西更适合获得Col3的最后一个值(IF和只有IF第3列是你表格的最后一列)