2017-06-16 81 views
0

所以我有一個宏需要一張我已經複製到工作表中的發票,然後複製高級金額並將其粘貼到單元中的摘要選項卡上,該單元對應於兩張紙上的同一社會安全號。下面是宏:用宏求和掙扎

Sub Eyemed2() 
Dim rw, LastRow, LastRRow As Long 
Dim rng As Range, Found As Range, SheetEnd3 As Range 
Dim ws1 As Worksheet, ws2 As Worksheet 
Set ws1 = Sheets("Eyemed 2") 
Set ws2 = Sheets("Raw") 
LastRow = ws2.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Row 
Set rng = ws2.Range("A2:B" & LastRow)  
LastRRow = ws1.Cells(Rows.Count, "R").End(xlUp).Row 
For rw = 14 To LastRRow  'Begin in row 14 of Eyemed 2 
    If Not ws1.Range("R" & rw) Is Nothing Then  
is blank 
     Set Found = rng.Find(What:=ws1.Range("A" & rw).Value, 
LookIn:=xlValues) 
     If Not Found Is Nothing Then 
      ws2.Range("N" & Found.Row) = ws1.Cells(rw, "J").Value 

     Else 
      Set SheetEnd3 = rng.Find(What:=ws1.Range("A" & rw).Value, 
     LookIn:=xlValues) 
      LastRow = ws2.Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).Row 
      ws1.Range("A" & rw).Copy ws2.Range("B" & LastRow) 
      ws2.Range("N" & SheetEnd3.Row) = ws1.Cells(rw, "J").Value 

     End If 
    End If 
Next rw 
End Sub 

因此,它看起來在柱中的R「Eyemed 2」,如果它不是空白的,然後在細胞中複製列N轉換的摘要標籤,列J.它發現通過在摘要選項卡的A:B列中搜索「Eyemed 2」的A列中的社會安全號碼,在適當的行中粘貼摘要選項卡。

我的問題是,在'Eyemed 2'中,一些社會安全號碼有兩次以上不同的次數列出。因此,我需要編輯宏以彙總具有相同社會安全號碼的所有金額,然後搜索並粘貼到摘要選項卡中的一個條目,而不是現在它只複製和粘貼一個數量。

非常感謝您

+0

使用'FindNext',如果您正在錄製宏,那麼這是另一個步驟。 –

+0

我建議你發佈你的數據的屏幕截圖。使用'SUMIF'公式似乎這個任務更容易。 –

+0

您有幾個選擇可以用於此目的,這取決於您使用Excel和VBA的舒適程度。在較不先進的一端,只需使用帶有SSN的數據透視表作爲行,並將總計作爲值。然後,您可以使用類似的方法來處理您所擁有的方法,並且它會爲您提供準確的總和。另一方面,更高級的方法是使用Scripting.Dictionary對象。鑑於你目前的代碼,我強烈建議前一種方法。在短期內你會更容易。 –

回答

0

如果有多個匹配,那麼這只是留給你找到的最後一個值:

ws2.Range("N" & Found.Row) = ws1.Cells(rw, "J").Value 

...但是這將每個值添加到任何先前的值

With ws2.Range("N" & Found.Row) 
    .Value = .Value + ws1.Cells(rw, "J").Value 
End with