2013-10-26 2 views
0

Я пытаюсь выяснить, как сортировать информацию на одном листе в документе Excel с помощью информации на другом листе, используя уникальный идентификатор, найденный на обоих листах.VBA Excel: сортировка по поиску другого листа

У меня есть два отдельных листов в Excel, sheet1 содержит информацию о пользователях, включая имя, пол и уникальный идентификатор, который выглядит более или менее, как это:

 A  | B | C 
John Doe  | M | 112 
Jane Doe  | F | 147 
Kerry West | F | 293 
Robert Smith | M | 861 

Sheet 2 содержит уникальный идентификатор и счет, как это:

A | B 
112 | 15 
147 | 12 
293 | 18 
861 | 11 

Что я хочу сделать, это разделить две группы на листе два по полу. Поэтому в основном я каким-то образом взять уникальный идентификатор на листе два, найти его в лист 1, а затем проверить пол, связанный с этим уникальным идентификатором, так что лист два будет в конечном итоге выглядит так:

A | B | C | D 
112 | 15 | 147 | 12 
861 | 11 | 293 | 18 

Так что строки идентифицированные как мужчины, остаются в их столбцах, а строки, идентифицированные как женщины, перемещаются в столбцы C и D. Я просто не могу понять, как я должен это делать, и это заставляет меня сходить с ума. любая помощь или совет будут оценены.

ответ

1

попробовать что-то вроде этого:

Создать лист с именем «Sheet3» и там резюме заполнит. Это должно заставить вас начать.

Sub nameList() 

Dim sh1 As Worksheet 
Dim sh2 As Worksheet 
Dim sh3 As Worksheet 
Dim lc1, lc2, x, y, i, vLook 

Set sh1 = Sheets("Sheet1") 
Set sh2 = Sheets("Sheet2") 
Set sh3 = Sheets("Sheet3") 

lc1 = sh1.Cells(Rows.Count, "A").End(xlUp).Row 
lc2 = sh2.Cells(Rows.Count, "A").End(xlUp).Row 

x = 2 
y = 2 
For i = 2 To lc1 
    vLook = Application.WorksheetFunction.VLookup(sh1.Cells(i, 3), Range(sh2.Cells(1, 1), sh2.Cells(lc2, 2)), 2, "false") 
    If sh1.Cells(i, 2) = "M" Then 
     sh3.Cells(x, 1) = sh1.Cells(i, 3) 
     sh3.Cells(x, 2) = vLook 
     x = x + 1 
    Else 
     sh3.Cells(y, 3) = sh1.Cells(i, 3) 
     sh3.Cells(y, 4) = vLook 
     y = y + 1 
    End If 
Next i 

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