2016-07-28 16 views
0

我试过各种方法和答案,选择除特定列的标题之外的所有行,并且都不起作用。在单独的工作表中选择除标题外的列的所有行

我尝试使用(15是这里的列):

Range(Cells(2, 15), Cells(.Cells(rows.Count, 15).End(xlUp).Row, 15)).Select 

我设法在工作表上使用.Activate用不同的语句来选,但是这改变了表,你可以看到明显所有行被选中。这是不可能的,因为我需要它。用户不能在他们面前不停地切换一堆表单,导致糟糕的体验。

如何在不使用.Activate的情况下选择标题(第一个)行之后的所有非空白列?

我需要获取这些值,将它们放入数组中,并检查当前单元格值是否在数组中。不要求这部分,但提供它作为上下文,如果它很重要。

+0

看我下面的回答,它会把你的数据在一个动态二维数组 –

+0

“我怎样才能选择所有的非空列”你要选择所有跳过空白列。你的意思是所有非空行?你是指列表中除了标题行之外的所有行吗? – 2016-07-28 04:44:13

+0

@fluffy_muffin你想选择它们吗?或将值保存到数组中?你在下面的答案中测试了代码吗? –

回答

0

您无法在非活动工作表上选择一个范围。

下面介绍如何设置除标题行以外的列中所有单元格的引用。

Dim TargetRange As Range 

With Worksheets("Sheet1") 

    Set TargetRange = .Range(.Cells(2, 15), .Cells(Rows.Count, 15).End(xlUp)) 

End With 
0

以下代码从工作表中读取数据(不使用SelectActivate),并将其放入2维数组中。

Option Explicit 

Sub Range_WO_Headers() 

Dim Sht_Source    As Worksheet 
Dim Rng      As Range 
Dim LastRow     As Long 
Dim LastCol     As Long 
Dim Rng_Array    As Variant 

' modify Sheet1 according to your sheet name 
Set Sht_Source = ActiveWorkbook.Worksheets("Sheet1") 

' assuming the table's data starts from Cell A1 
LastRow = Sht_Source.Cells(Sht_Source.Rows.Count, "A").End(xlUp).Row 
LastCol = Sht_Source.Cells(1, Sht_Source.Columns.Count).End(xlToLeft).Column 

' resize array according to number of columns and number of rows 
ReDim Rng_Array(0 To LastRow, 0 To LastCol) 

' set dynamic array from Cell A1 to last row and last column found (starting the second row) 
Set Rng = Sht_Source.Range(Cells(2, 1), Cells(LastRow, LastCol)) 

Rng_Array = Application.Transpose(Rng) 

End Sub 
相关问题