![](/img/trans.png)
[英]How to auto-populate a names list to one sheet based on data in another sheet in Excel for Mac 2016
[英]Creating Macro to Auto-Populate Data from one Workbook to another
為了提供一些背景知識,我環顧了 Stack,試圖找到解決我的問題的方法,但結果很短。
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.