2013-10-26 108 views
0

我想弄清楚如何使用在兩張工作表上找到的唯一標識符在另一工作表中使用信息對Excel文檔中的一個工作表中的信息進行排序。VBA Excel:通過搜索另一個工作表進行排序

我有在Excel中兩個獨立的片材,sheet1包含用戶信息,包括姓名,性別和一個唯一的ID看起來或多或少像這樣:

 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 

我想要做的是根據性別區分表二中的兩組。所以基本上我會以某種方式把唯一的ID,表二,發現它在表1,然後檢查與唯一ID相關聯的性別,使板材其中2最終看起來像這樣:

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

讓行確定爲男性留在他們的列中,而被識別爲女性的行移動到列C和D中。我只是無法弄清楚我是如何做到這一點的,這使我瘋狂。任何幫助或建議,將不勝感激。

回答

1

嘗試這樣:

創建一個名爲「表Sheet 3」片而這也正是摘要將填充。這應該讓你開始。

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 
相關問題