2016-07-28 3 views
0

Я пробовал различные способы и ответы, чтобы выбрать все строки, кроме заголовка для определенного столбца, и ни один из них не работает.выберите все строки для столбца, кроме заголовка, в отдельном листе

Я попытался с помощью (15 является колонка здесь):

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

мне удалось использовать .Activate на листе с другим заявлением, чтобы выбрать все, но это меняет лист, и вы можете явно видеть все выбранные строки. Это невозможно для того, для чего мне это нужно. У пользователей не может быть пучка листов, постоянно переключаемых перед ними, что приводит к плохому опыту.

Как выбрать все ненулевые столбцы после заголовка (первой) строки без использования .Activate?

Мне нужно получить эти значения, поместить их в массив и проверить, находится ли текущее значение ячейки в массиве. Не прося эту часть, но предоставляя ее в качестве контекста, если это имеет значение.

+0

видеть меня ответ ниже, он будет поместить данные в динамическом 2 двухмерного массива –

+0

«Как я могу выбрать все без пустых столбцов» Вы хотите, чтобы выбрать все пропускать пустые столбцы. Вы имеете в виду все непустые строки? Вы имеете в виду все строки в списке, кроме строки заголовка? –

+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

Следующий код считывает данные с листа (без использования Select или Activate) и помещает его в двумерный массив.

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 
Смежные вопросы