2017-02-17 149 views
0

我有一张包含3张工作表的工作簿。表1和表2有2列信息。列A是唯一标识符,列B是可能重复出现的货币值。使用VBA中的For循环识别重复值并复制到其他单元格Excel

工作表1中的所有信息将在工作表2中重复,但工作表2还会提供其他信息。

我需要循环通过在片2的唯一标识符(A栏),其与在片材1中的信息,并且从片材2的固有信息复制到一个范围在表仅3.

林现在学习VBA的基础知识,所以可能有更好的方法来做到这一点,但我希望能够将代码扩展到其他工作簿。

感谢您的帮助。

 Sub Split_818s() 
     Dim Ref As Long 
     Dim Ref1 As Long 
     Dim Amount As Long 

     For Ref = Range("A" & Rows.Count).End(xlUp).Row To 2 Step -1 
      For Ref1 = Range("B6") To Range("B100") 
     If (Worksheets("Sheet2").Range(Ref).Value <> Worksheets("Sheet1").Range(Ref).Value) Then 
      Worksheets(“Sheet3”).Range(Ref1).Value = Worksheets("Sheet2).Range(Ref).Value 
      End If 
      Next Ref1 
     Next Ref 

     End Sub 
+0

以何种方式是在Sheet2上的数据工作表Sheet1,从独特的,你在你的代码似乎是在B列工作表Sheet1上,在工作表Sheet1上A列值进行比较值列A.比较的ID。 – Gordon

+0

@Gordon在表1和2中列A中的信息都是唯一的用户标识。这是一份每日两次的报告。第二份报告包含与第一份相同的信息,但是全天获得的附加信息。我希望将细节从Sheet 2 Column A复制到Sheet 3 Column B – RappaportXXX

回答

0

我把不同的语法在那里显示不同的方法:

Sub Split_818s() 
Dim wS1 As Worksheet 
Dim wS2 As Worksheet 
Dim wS3 As Worksheet 
Dim Ref As Long 
Dim Ref1 As Long 
Dim Amount As Long 

Set wS1 = ThisWorkbook.Sheets("Sheet1") 
Set wS2 = ThisWorkbook.Sheets("Sheet2") 
Set wS3 = ThisWorkbook.Sheets("Sheet3") 

wS3.Cells.Clear 

For Ref = wS2.Range("A" & wS2.Rows.Count).End(xlUp).Row To 2 Step -1 
    For Ref1 = wS1.Range("B6").Row To wS1.Range("B100").Row 
     If wS2.Range("A" & Ref).Value <> wS1.Cells(Ref1, 1).Value Then 
      With wS3 
       .Cells(.Range("A" & .Rows.Count).End(xlUp).Row + 1, "A").Value = _ 
         wS2.Range("A" & Ref).Value 
      End With 'wS3 
     End If 
    Next Ref1 
Next Ref 

End Sub 
0

哇噢阵列!!!!!这是一段非常简单的代码。一旦你开始分解代码,这会教你很多。

Private Sub this() 
    Dim bringOver As Variant 
    Dim bringOver2 As Variant 
    Dim j As Long 
    Dim i As Long 
    i = 0 
    j = 0 
    bringOver = ThisWorkbook.Sheets("Sheet1").UsedRange 
    bringOver2 = ThisWorkbook.Sheets("Sheet2").UsedRange 
    For i = LBound(bringOver2, 1) To UBound(bringOver2, 1) 
     If bringOver2(i, 1) = bringOver(i, 1) Then 
      Debug.Print ; bringOver2(i, 1) 
      ThisWorkbook.Sheets("Sheet3").Cells(Sheet3.Rows.Count, 1).End(xlUp).Offset(1, 0).Value = bringOver2(i, 3) 
     End If 
    Next i 
End Sub 
相关问题