2017-02-16 2 views
2

У меня есть электронная таблица с кучей данных в одной колонке, и я ищу, чтобы вытащить конкретные данные. Я пытаюсь понять, будет ли работать «до цикла».петля через колонку и вытащить конкретные ячейки

Я пытаюсь заставить цикл остановиться, когда он видит «каталог *» как часть ячейки, например Directory of G: \ Example. До тех пор цикл должен просматривать ячейки, и если он не начинается с числа, скопируйте эту ячейку в другой столбец/столбец.

Sub Order() 

iRow = 1 

    Do Until Cells(iRow, 1) = "Directory*" 
    If Cells(iRow, 1) <> NumberatBeginning Then 
    Cells(iRow, 1).Copy _ 
    Destination:=Worksheets("Sheet2").Range("A1") 
    End If 


    iRow = iRow + 1 
    Loop 

End Sub 

Любая помощь будет оценена

ответ

2

Вы почти там, функция IsNumeric может использоваться в сочетании с функцией Mid (или Left), чтобы проверить первый символ в значении ячейки и возврата True или False, если символ является числовым. Попробуйте это:

Sub Order() 

Dim iRow as Long, x as Long 

iRow = 1 
x = 1 

Do Until Cells(iRow, 1).Value Like "Directory*" 
    If Not IsNumeric(Mid(Cells(iRow, 1).Value, 1, 1)) Then 
     Worksheets("Sheet2").Cells(x, 1).Value = Cells(iRow, 1).Value 
     x = x + 1 
    End If 
iRow = iRow + 1 
Loop 

End Sub 

Вы должны избегать использования копирования и вставки, как это замедляет код, всегда лучше просто установить значение ячейки.

Кроме того, когда вы циклически и копирование ячеек с нечисловыми первыми символами и вставить их в Sheet2 коде всегда вставляя в ту же клетку, Range("A1"), если вы хотите получить список значений, которые необходимо будут чтобы увеличить его, добавив строку каждый раз, когда значение копируется в Sheet2.

+0

Несомненно, 'Like 'Directory *« 'будет ложным, если в начале было число, так что не нужно было все равно проверять? – CallumDA

+0

Но @OP хочет, чтобы цикл остановился, когда он нашел значение, которое начинается с '' Directory * ''или так я понял из вопроса – Jordan

+0

Спасибо, что работал отлично –

Смежные вопросы