VBA Excel:通过搜索其他工作表进行排序

时间:2013-10-26 14:19:46

标签: excel vba 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

我想要做的是根据性别将第2页中的两组分开。所以基本上我会以某种方式获取第2页上的唯一ID,在表1中找到它,然后检查与该唯一ID相关联的性别,以便第2页最终看起来像这样:

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

因此,标识为男性的行将保留在其列中,而标识为女性的行将移至列C和D。我只是无法弄清楚我是如何做到这一点的,这让我疯狂。任何帮助或建议将不胜感激。

1 个答案:

答案 0 :(得分: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