簡體   English   中英

創建宏以將數據從一個工作簿自動填充到另一個

[英]Creating Macro to Auto-Populate Data from one Workbook to another

為了提供一些背景知識,我環顧了 Stack,試圖找到解決我的問題的方法,但結果很短。

使用 VBA 比較兩個 Excel 工作簿

excel vba 宏匹配來自兩個不同工作簿的單元格並相應地復制和粘貼

我想要做的是確定兩個工作簿“工作簿 A”和“工作簿 B”中是否顯示相同的數字。 如果兩個工作簿中都存在相同的數據,我希望工作簿 B 中另一列的數據自動填充到工作簿 A 的特定列中。

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

數據位於工作簿 A 中的列是 B。列位於工作簿 B 中的相同數據是 C。

如果兩個工作簿中的數字相同,我想從工作簿 B 的 M 列復制數據並將其放入工作簿 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

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

這條線...

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)

...到這一行...

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

這些更改之一應該可以讓您編寫“有效”的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM