Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何使用Excel或Access匹配数据_Vba_Excel - Fatal编程技术网

Vba 如何使用Excel或Access匹配数据

Vba 如何使用Excel或Access匹配数据,vba,excel,Vba,Excel,我有一个包含10000个条目的主工作表,在a列中有一个公共标识符。我有许多其他工作表有数据和相同的公共ID,但用于较小的人群。例如,有一张供1500名老年人使用的表格。A列是唯一ID,B列是老年人的y列。我如何匹配这两张表,以便在我的主表中有一个新的列来标识从“老年人”表的1500个ID到主表上的10000个ID的匹配?VLOOKUP不起作用,因为master中的条目比senior citizen文件中的条目多得多。使用简单的循环,这很容易实现。我不确定我是否完全理解了你的问题,但我很确定这就是

我有一个包含10000个条目的主工作表,在a列中有一个公共标识符。我有许多其他工作表有数据和相同的公共ID,但用于较小的人群。例如,有一张供1500名老年人使用的表格。A列是唯一ID,B列是老年人的y列。我如何匹配这两张表,以便在我的主表中有一个新的列来标识从“老年人”表的1500个ID到主表上的10000个ID的匹配?VLOOKUP不起作用,因为master中的条目比senior citizen文件中的条目多得多。

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

注意:在代码中,我一次使用单元格(sRow,“B”),另一次使用单元格(tRow,2)。他们完成了同样的事情,我这样写是为了向你们展示它是如何工作的。可以使用字母或“LONG”类型的变量设置列值。这使您可以使用计数器并在行和列之间循环,根据您的需要,按您认为合适的方式跳过

不知道您的工作表名称,使用“Seniors”和“Master”:

测试:

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

您可能可以使用索引和匹配的组合。做一些研究;尝试一些解决方案,如果遇到问题,请发回,展示您所做的工作以及遇到的问题。此外,您的工作表的名称是什么?当您不知道要为值键入什么时,编码是很棘手的。A列在两张纸上的格式是否相同?我尝试了索引和匹配的一些变化,但都没有效果。以及Microsoft Query和一些使用Access的SQL查询。。。A列在两张表上的标签相同,并且老年人表中的所有条目在主页上都有一个匹配条目。主表是主表,示例老年人表是老年人。我不是一个数据/IT人员,而是在另一名员工离开时“继承”了一些工作。我知道这种感觉。如果你来对了地方,请点击我的用户名浏览我的其他答案。可能还有其他一些问题,你可以从中受益。这正是我想要的!!!谢谢你,我复制了你的结果,所以现在我将使它适用于我的几张有几千个条目的表格。你太棒了!如果我想从工作表1的第2列中收集ID唯一的数字,而不是“y”,我将如何更改代码?在上面的代码中,tempID就是ID。因此,您可以将该值存储在其他位置,而不是在主工作表中搜索它。你可以同时做这两件事。。。请记住,当它发现“y”时,该行仍然在该行中,因此您仍然可以在该行中轻松地获取任何内容。一旦你收集了它们,你会怎么处理它们?我想把它们放在母版纸上。例如,将存储在较小表单中的社会保险号码与我的主表单匹配。我假设我会改变'Sheets(sh2).Cells(tRow,2)=“y”'来实现这一点?在上面的代码中,假设tRow=5,那么它将检查A5是否匹配,并在B5中写入一个“y”。如果您想在某处写入tempID(ssn),只需说“[destination]=tempID”。我只是对ID使用了简单的整数。