2014-06-17 7 views
1

У меня есть 2 Master Sheets, основанный на 2 условиях расположения. Я импортирую эти данные из учебника Excel в рабочий лист в книге основных листов. Я думаю, было бы лучше, если бы я смог сканировать первый столбец (например, A), и если строка удовлетворяет определенному условию, она переместит всю строку в соответствующий основной лист чуть ниже текущих данных. Если он удовлетворяет условию B, он переходит к другому основному листу. Затем я могу использовать Remove Duplicates в Excel для фильтрации данных. Мой текущий код ниже, и я довольно новичок в VB Automation. Любые идеи о том, какой код я мог бы использовать для выбора и перемещения строк по критериям в 2 отдельных рабочих листа?Excel VBA Копия/Линия

Sub Copy_DataCDN() 
Sheets("CDNDataDump").Range("A2:AC10000").Copy _ 
Sheets("CDN").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) 
Sheets("CDN").Select 

ответ

0

Как вы предложили, это можно сделать с помощью цикла через клетку в вашем состоянии колонка (в коде примера это столбец A).

Вот пример кода, который вы можете изменить.

Sub MoveToSheets() 
    Dim dataSource As Worksheet: Set dataSource = ThisWorkbook.Sheets(1) 
    Dim dataTargetA As Worksheet: Set dataTargetA = ThisWorkbook.Sheets(2) 
    Dim dataTargetB As Worksheet: Set dataTargetB = ThisWorkbook.Sheets(3) 
    Dim dataSourceRange As Range: Set dataSourceRange = dataSource _ 
    .Range("A1:A" & dataSource.Cells(dataSource.Rows.Count, "A").End(xlUp).Row) 

    For Each Cell In dataSourceRange 
     'Test 1 - I'm checking if the cell value is a number as an example. 
     If IsNumeric(Cell.Value) = True Then 
      dataTargetA.Range("A" & Rows.Count).End(xlUp).Offset(1).EntireRow.Value _ 
      = Cell.EntireRow.Value 
     'Test 2 - Checking if the cell value is "e". 
     ElseIf Cell.Value = "e" Then 
      dataTargetB.Range("A" & Rows.Count).End(xlUp).Offset(1).EntireRow.Value _ 
      = Cell.EntireRow.Value 
     End If 
    Next 
End Sub 

В цикле For Each Cell In dataSourceRange вы можете иметь столько условий, сколько вам нужно. У вас может быть больше листов для вставки.

+0

Это сработало отлично, и цикл - отличная идея и гораздо более компактная, чем я думал, что это будет! Спасибо :) – Treevar

+0

Рад, что это помогло! – natancodes