如何使用Excel或Access匹配数据

时间:2014-12-15 17:53:32

标签: excel vba excel-vba

我有一个包含10,000个条目的主表,在A列中有一个公共标识符。我有许多其他表,它们具有数据和相同的公共ID,但适用于较小的人口。例如,有1,500名老年人的床单。 A列是唯一ID,B列是SENIOR_CITIZEN的y。如何匹配这两张纸,以便在我的主文件中,主文件中会有一个新列标识从老年公民表中的1500个ID到主文件上的10,000个ID的匹配? VLOOKUP不起作用,因为主人的条目多于老年公民档案。

1 个答案:

答案 0 :(得分:0)

使用简单的循环,这很容易实现。我不确定我是否完全理解你的问题,但我很确定这就是你想要的。

注意:在代码中,我使用Cells(sRow,“B”)一次和(tRow,2)另一次。他们完成同样的事情,我正是这样写的,以向你展示它是如何运作的。您可以使用字母或“LONG”类型变量设置列值。这使您可以使用计数器并遍历行和列,跳过您认为合适的内容,逻辑上满足您的需求。

使用“老年人”和“大师”不知道您的工作表名称:

<强>试验:

Sub SeniorMatch()

Dim sh1 As String
Dim sh2 As String
Dim lastRow1 As Long    'For sh1
Dim lastRow2 As Long    'sh2
Dim tempID As String    'In case you use any letters in your ID

sh1 = "Seniors" 'Set the Sheet Names
sh2 = "Master"

lastRow1 = Sheets(sh1).Range("A" & Rows.Count).End(xlUp).row
lastRow2 = Sheets(sh2).Range("A" & Rows.Count).End(xlUp).row

'using sRow for SOURCE Row, and tRow for Target Row

For sRow = 2 To lastRow1
    If Sheets(sh1).Cells(sRow, "B").Value = LCase("y") Then
        tempID = Sheets(sh1).Cells(sRow, 1).Text
        For tRow = 2 To lastRow2
            If Sheets(sh2).Cells(tRow, 1) = tempID Then
                Sheets(sh2).Cells(tRow, 2) = "y"    'Set col B to "y"
            End If
        Next tRow
    End If
Next sRow

End Sub

Seniors RESULT

相关问题