2015-02-16 3 views
0

Предположим, что у меня есть мой личный журнал в листе1, а в столбце «A» у меня есть основной номер, который будет номером учетной записи клиента, а в столбце «B» у меня есть их дочерние счета номер.Сравнение двух списков/каждого списка из двух столбцов

В листе 2 я получил список учетных записей и подписок в той же структуре, и мне нужно найти уникальный номер, который находится в sheet2, но у меня его нет в моем личном журнале sheet1.

Например, в sheet1 У меня есть

account  sub account 

1110000  12 

1110000  14 

И я получил в Лист2 список, который содержит:

account  sub account 

1110000  12 

1110000  16 

Макрос должен найти в этом случае 1110000 16 (счет такой же, но субсчет является новым) из списка sheet2 и записывает его в следующую пустую ячейку в sheet1.

Я буду очень признателен за вашу помощь, я попытался с совпадением и vlookup, но это не сработает.

Эндрю

+0

Это один номер счета или много? –

+0

Множество учетных записей со многими дополнительными учетными записями для каждого – AndrewPL

+0

Как организованы номера счетов? Они отсортированы по номеру? Вам нужно предоставить больше данных из-за потенциальной сложности вашего макроса и нехватки ваших данных? Я мог бы ответить на ваш вопрос с предоставленными вами данными, но будет ли он работать для вас позже? Я полагаю, вам понадобится 'Dictionnary', если ваши данные не организованы. –

ответ

0

Одним из возможных решений является копирование счетов и субсчетов вашего журнала листа в массив. Сделайте то же самое со счетами и субсчетами в sheet2. Затем пропустите все пары учетной записи и субсчета из листа2 и проверьте, находятся ли они в массиве журнала. Если не скопировать их в массив новых учетных записей. В конце скопируйте новые учетные записи в свой лог-лист. Ниже код решения этого решения:

Option Explicit 
Option Base 1 

Sub CopyNewAccountsInLogSheet() 

Dim initial As Range 'range with accounts and sub-accounts in sheet 1 
Dim destination As Range 'the range where to add new accounts and sub-accounts in sheet1 
Dim myLog() As Variant 'array with accounts and sub-accounts from log sheet 
Dim newList() As Variant 'array of accounts and sub-accounts from sheet 2 
Dim newAccounts() As Variant 'array of accounts and sub-accounts to add to log sheet 
Dim x, y, n As Integer 
Dim isInLog As Boolean 

Set initial = Worksheets("Sheet1").Range("a1").CurrentRegion 'replace with correct range 
Set destination = Worksheets("Sheet1").Range("A" & (initial.Rows.Count + 1)) 'first cell below initial range 
myLog = initial.Value 
newList = Worksheets("Sheet2").Range("a1").CurrentRegion.Value 'replace with correct range 
ReDim newAccounts(UBound(newList, 1), 2) 
n = 0 

For x = 1 To UBound(newList, 1) 'loop through new list 

    isInLog = False 'by default, we assume account + sub-account is not in log sheet 

    For y = 1 To UBound(myLog, 1) 'compare with each account + sub-account in log file 
     If CStr(myLog(y, 1)) & CStr(myLog(y, 2)) = CStr(newList(x, 1)) & CStr(newList(x, 2)) Then 
      isInLog = True 
      Exit For 
     End If 
    Next 

    If Not isInLog Then 
     n = n + 1 
     newAccounts(n, 1) = newList(x, 1) 
     newAccounts(n, 2) = newList(x, 2) 
    End If 

Next 

If n > 0 Then destination.Resize(n, 2).Value = newAccounts 'copy new accounts in sheet 

End Sub 
+0

Супер большой !!! Работает. Большое спасибо за вашу помощь и усилия! – AndrewPL

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