2016-02-24 2 views
3

У меня есть 2 столбца, один с датами (столбец A: A, тип dd/mm/yyyy hh: mm) другой со значениями параметра (столбец B: B), зарегистрированный на каждой дате. Но не все даты имеют зарегистрированные значения (в этом случае в столбце BI будет -9999.Копировать значения на основе критериев с макросом

Мне нужно скопировать в другие столбцы (например, D: D и E: E) только ячейки, в которых есть значение . кроме -9999 и даты корреспондентской тоже Например:

Example
enter image description here

Моих данные серий довольно долго, он может получить до 10000 или более строк, поэтому я не могу сделать этот выбор «вручную» Я бы предпочел макросы, а не формулы массива, потому что я хочу выбрать момент вычисления.

+0

Посмотрите на [метод Автофильтр] (https://msdn.microsoft.com/en-us/library/office/aa221844.aspx). Если у вас возникают проблемы, вернитесь и отредактируйте свой вопрос, чтобы показать, с чем вы столкнулись (работаете или нет). Наряду с вашим кодом, включите некоторые примеры данных, которые [не должны быть перепечатаны с изображения] (http://tinyurl.com/kdxb7le). – Jeeped

+0

См. [Копирование нескольких диапазонов из листа 1 на основе условия и вставка его в формате «Лист2») (http://i.stack.imgur.com/47ZYM.gif). – Jeeped

+0

Спасибо, что сообщили мне, что я не должен размещать изображения! Сожалею! – Ruth

ответ

3

Этот код должен делать то, что вы ищете. Это скопирует все строки со значением в столбце B в столбцы D и E. '

Sub copyrows() 
Dim RowNo, newRowNo As Long 

    RowNo = 2 
    newRowNo = 2 

    With ThisWorkbook.ActiveSheet 

     .Cells(1, 4).Value = "Date" 
     .Cells(1, 5).Value = "H_Selected" 

      Do Until .Cells(RowNo, 1) = "" 

      If .Cells(RowNo, 2) <> "-9999" Then 
       .Cells(newRowNo, 4) = .Cells(RowNo, 1) 
       .Cells(newRowNo, 5) = .Cells(RowNo, 2) 
       newRowNo = newRowNo + 1 
      End If 

      RowNo = RowNo + 1 

      Loop 

    End With 

End Sub 
+0

Спасибо! Это именно то, что мне нужно! – Ruth

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