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
Excel VBA-从两个数据列表循环并复制匹配项_Excel_Vba - Fatal编程技术网

Excel VBA-从两个数据列表循环并复制匹配项

Excel VBA-从两个数据列表循环并复制匹配项,excel,vba,Excel,Vba,我有两个不同表格中的数据列表。表1包含美国各地的数据,表2仅包含一个地区的数据。我需要宏查找表1中表2中出现的所有名称,并将它们复制到不同的表(“FL”)中。我当前的宏只允许指定范围并在表1中查找,相反,我需要能够选择整个列表或列,并对所有不同的名称执行相同的操作 Sub RoundedRectangle1_Click() Dim Name As String Dim i As Integer 'row counter Sheets("FL").Range("

我有两个不同表格中的数据列表。表1包含美国各地的数据,表2仅包含一个地区的数据。我需要宏查找表1中表2中出现的所有名称,并将它们复制到不同的表(“FL”)中。我当前的宏只允许指定范围并在表1中查找,相反,我需要能够选择整个列表或列,并对所有不同的名称执行相同的操作

Sub RoundedRectangle1_Click()


Dim Name As String
Dim i As Integer 'row counter


Sheets("FL").Range("A2:J5000").ClearContents
Name = Sheets("Sheets2"). Range("B2").Value 'I need that instead of B2 it loops through the end of the list B2:B5000

For i = 2 To 5000

    If Cells(i, 2) = Name Then
    
        Sheets("Sheet1").Range(Cells(i, 1), Cells(i, 9)).Copy
    
        Sheets("FL").Range("A5000").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValuesAndNumberFormats
        
        
        End If
        
Next i

ThisWorkbook.Sheets("FL").Activate

End Sub


听起来你需要另一个循环。仅供参考-我不建议使用
Name
作为变量-您应该使用VBA中不常用的单词

Sub RoundedRectangle1_Click()

    Dim Name As String
    Dim i As Long
    Dim i As Long
    
    Sheets("FL").Range("A2:J5000").ClearContents
    
    For i = 2 To 5000
        
        Name = Sheets("Sheets2").Range("B" & i).Value
        
        For j = 2 To 5000
        
            If Cells(j, 2) = Name Then
            
                Sheets("Sheet1").Range(Cells(j, 1), Cells(j, 9)).Copy
            
                Sheets("FL").Range("A5000").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValuesAndNumberFormats
                
            End If
        
        Next j
            
    Next i
    
    ThisWorkbook.Sheets("FL").Activate

End Sub
用4999*4999(~25.000.000)cell=name比较代替怎么样?此外,那些隐式
单元格
调用也是危险的(隐式AcriveSheet.Cells可能会更改)。