Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.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 基于唯一标识符将行复制到新电子表格中_Vba_Excel - Fatal编程技术网

Vba 基于唯一标识符将行复制到新电子表格中

Vba 基于唯一标识符将行复制到新电子表格中,vba,excel,Vba,Excel,在“粘贴新ID”选项卡中,从第2行开始的A列有用于标识人员的唯一ID列表。有三十个唯一的身份证号码 在“原始导出”选项卡中,有一组原始数据,其中从第2行开始的B列包含200多人的所有ID 我把一个ID号列表放在这里的“粘贴新ID”中,并将与该ID号关联的整行拉入测试。因此,只有在“将新ID粘贴到此处”工作表中指定了ID号的行才会复制到测试中 三十行中只有十行正在生成 我需要另一个循环吗 Sub ExtractID() Set i = Sheets("Raw Export") Set e = S

在“粘贴新ID”选项卡中,从第2行开始的A列有用于标识人员的唯一ID列表。有三十个唯一的身份证号码

在“原始导出”选项卡中,有一组原始数据,其中从第2行开始的B列包含200多人的所有ID

我把一个ID号列表放在这里的“粘贴新ID”中,并将与该ID号关联的整行拉入测试。因此,只有在“将新ID粘贴到此处”工作表中指定了ID号的行才会复制到测试中

三十行中只有十行正在生成

我需要另一个循环吗

Sub ExtractID()

Set i = Sheets("Raw Export")
Set e = Sheets("Test")
Set p = Sheets("Paste New IDs Here")

Dim d
Dim j
Dim k

d = 1
j = 2
k = 2

Do Until IsEmpty(i.Range("B" & j))

If i.Range("B" & j) = p.Range("A" & k) Then
d = d + 1
k = k + 1
e.Rows(d).Value = i.Rows(j).Value


End If
j = j + 1

Loop
End Sub

您需要在k上添加一个内部循环:

Do Until IsEmpty(i.Range("B" & j))    
  Do Until isEmpty(p.Range("A"&k))
    If i.Range("B" & j) = p.Range("A" & k) Then
      d = d + 1          
      e.Rows(d).Value = i.Rows(j).Value
    End If
    k = k + 1
  Loop
  k=2
  j = j + 1    
Loop

您可以通过Excel以非常有效的方式完成这项工作。使用一些vlookup函数,您应该能够设置一个工作表,在该工作表中,只要将ID粘贴到特定列中,Excel就会检索相应的数据并显示它们。当您删除ID时,相应的数据将不再显示。这就是你想要的吗?@Louis.B这是我最初的目标,但在花了大量时间研究之后,我相信使用VBA是唯一的出路。我使用VBA使它工作,但我仍然想探索这个选项。有没有关于如何使用VLOOKUP复制整行的想法?这个想法不是使用VLOOKUP复制整行,而是使用VLOOKUP检索所需每列中的数据。给你一个想法,类似的东西应该会起作用:=vlookupPaste这里有新的ID!相关行;原材料出口!数据集;对应列。您甚至可以添加适当的if条件,以便在vlookup返回错误时不显示任何内容。告诉我,如果你需要更多的细节,我可以补充一个答案。