2012-03-02 98 views
0

搜索在Sheet2中,並更新與相鄰的價值Sheet1中值我嘗試寫一些VBA代碼,會第一時間值唯一值的列表,在A列Sheet 2上並搜索其反對sheet1中A列中的唯一值。一旦找到,它就會將單元格6更新爲sheet1上活動單元格的右側,其值與sheet2中的唯一代碼相鄰。它將繼續,在表2中列出其餘的表格,直到它到達一個空白單元格。Excel的VBA - 從工作表Sheet1

我已經成功地獲取代碼,找到獨特的價值觀,然後通過添加1更新單元6的權利,但我不能工作了其他位:

Private Sub SinglePaste_Click() 
    On Error GoTo InvalidBarcode 
    Dim EAN As Range 
     Sheets("Paste Here").Select 
      For Each EAN In ActiveSheet.Range("A:A") 
      Sheets("Master Stock File").Select 
      With Worksheets("Master Stock File") 
      .Range("A:A").Find(What:=EAN, After:=.Range("A1"), LookIn:=xlFormulas, _ 
      LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
      MatchCase:=False).Activate 
     ActiveCell.Offset(0, 6).Select 
     ActiveCell.Value = ActiveCell.Value + 1 
     End With 
     If IsEmpty(EAN) Then Exit For 
     Next EAN 
    Exit Sub 
    InvalidBarcode: 
    MsgBox ("Invalid Barcode - " & "" & EAN) 
    End Sub 

這是否合理?任何幫助是極大的讚賞。

+1

那麼究竟什麼是「其他位」,你不能工作了?運行直到一個空白單元格或在另一個表格中找到相應的唯一代碼?這兩張紙都有相同的唯一代碼嗎?或者會在一張紙上丟失一些代碼? – Ryan 2012-03-02 17:45:43

回答

1

你的代碼使用了大量的ActiveSheet,ActiveCell和Select來表示宏記錄器,通常效率較低。我仍然不知道「另一位」你指的是,但這裏是一個重新設計的宏:

Public Sub NewSinglePaste_Click() 
    Dim EAN As Range 
    Dim FoundRange As Range 
    Dim ValueCell As Range 
    Dim MasterSheet As Worksheet 
    Dim PasteSheet As Worksheet 

    Set MasterSheet = Sheets("Master Stock File") 
    Set PasteSheet = Sheets("Paste Here") 

    On Error GoTo InvalidBarcode 
    For Each EAN In PasteSheet.Range("A:A") 
    If IsEmpty(EAN.Text) Or EAN.Text = "" Then Exit For 

    Set FoundRange = MasterSheet.Range("A:A").Find(What:=EAN, _ 
     After:=MasterSheet.Range("A1"), LookIn:=xlFormulas, LookAt:=xlPart, _ 
     SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) 

    If Not (FoundRange Is Nothing) Then 
     Set ValueCell = FoundRange.Offset(0, 6) 
     ValueCell.Value = ValueCell.Value + 1 
    Else 
     Debug.Print "Cell not found: " & EAN.Worksheet.Name & "!" & EAN.Address 
    End If 
    Next EAN 

    Exit Sub 

InvalidBarcode: 
    MsgBox ("Invalid Barcode - " & "" & EAN) 

End Sub 
+0

我認爲他想更新'FoundRange.Offset(0,6)'用'EAN.Offset(0,1)的值' – 2012-03-03 01:23:45

+0

感謝您的幫助兩者。我試圖解釋(在一個非常混亂的一種方式)是工作表Sheet1(「主原文件」)將擁有唯一的ID的一個明確的清單,Sheet2的(「粘貼在這裏」)將在那裏我貼的一小部分這些ID以及將用於更新主股票文件表中某些值的其他數據。我掙扎着的部分是不是隻是增加1到小區六在主原文件中發現EAN的權利,我想補充一點,在旁邊的粘貼在此表中的ID,我認爲這是數量Tim上面提到的。 – 2012-03-05 16:42:23

+1

...可能應該提到,這與+ EAN.Offset(0,1)的加法完美配合。謝謝你非常。 – 2012-03-05 16:51:12