2016-04-21 83 views
-1

爲了提供一些背景知識,我已經瀏覽了Stack以嘗試找到解決我的問題的方法,但總結得不多。創建宏以將數據從一個工作簿自動填充到另一個工作簿

Using VBA to compare two excel workbooks

excel vba macro to match cells from two different workbooks and copy and paste accordingly

我所試圖做的是找出如果同樣的數字在兩個工作簿介紹,「工作簿」和「工作簿B」。如果兩個工作簿中都存在相同的數據,我希望將工作簿B中另一列的數據自動填充到工作簿A中的某個列中。

有關工作簿B的警告是文檔將生存在SharePoint網站上。

數據存在於工作簿的列是B.列住在工作簿B是C.

相同的數據如果數字在這兩個工作簿一樣,我想複製從M列中的數據在工作簿B中,並將其放在工作簿A的J欄中。

任何幫助將不勝感激。

這是唯一的代碼,我已經能夠找到:

我不VBA高技能和不具備的作品還沒有任何代碼。我能找到的最接近的代碼如下:

Sub UpdateW2() 

Dim w1 As Worksheet, w2 As Worksheet 
Dim c As Range, FR As Long 

Application.ScreenUpdating = False 

Set w1 = Workbooks("4130 Sedgwick Activity Report 03212016_GT.xlsb").Worksheets("4130 Lincoln") 
Set w2 = Workbooks("Test_Eaton Absence Detail Report 04-15-2016 (2)_GT.xlsx").Worksheets("Active Locations") 


For Each c In w1.Range("B3", w1.Range("J" & Rows.Count).End(xlUp)) 
    FR = 0 
    On Error Resume Next 
    FR = Application.Match(c, w2.Columns("A"), 0) 
    On Error GoTo 0 
    If FR <> 0 Then w2.Range("M" & FR).Value = c.Offset(, -3) 
Next c 
Application.ScreenUpdating = True 
End Sub 
+0

請參閱[如何問](http://stackoverflow.com/help/how-to-ask)。 – findwindow

+0

我相應地更新了我的問題。 – Glenn

+0

請發佈您的代碼,爲什麼它不起作用。 – findwindow

回答

0

在您發佈的代碼中,有兩行代碼會導致問題。

這條線......

For Each c In w1.Range("B3", w1.Range("J" & Rows.Count).End(xlUp)) 

...說要通過所有範圍內的 「B3」 細胞循環通過 「J」 的東西。 「B」是工作表中的第二列。

這條線......

If FR <> 0 Then w2.Range("M" & FR).Value = c.Offset(, -3) 

...說從循環正在尋找在小區取值三列向後,放入工作表中的列「M」中的其他工作簿。如果你從列「B」後退三列,你會得到一個錯誤。

在你的評論中,你只會說「我想從工作簿B的另一列中提取數據」,但是你不會說哪一列。

如果「另一列」真的是三列後面,那麼你將至少需要改變這一行...

For Each c In w1.Range("B3", w1.Range("J" & Rows.Count).End(xlUp)) 

...這行... ...

For Each c In w1.Range("D3", w1.Range("J" & Rows.Count).End(xlUp)) 

如果「另一列」始終是固定的(例如,列A),那麼你可以改變這一行...

If FR <> 0 Then w2.Range("M" & FR).Value = c.Offset(, -3) 

...到TH是行...

If FR <> 0 Then w2.Range("M" & FR).Value = w1.Range("A" & c.Row) 

其中一個變化應該讓你的代碼「工作」。

相關問題