Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 创建宏以自动将数据从一个工作簿填充到另一个工作簿_Excel_Macros_Vba - Fatal编程技术网

Excel 创建宏以自动将数据从一个工作簿填充到另一个工作簿

Excel 创建宏以自动将数据从一个工作簿填充到另一个工作簿,excel,macros,vba,Excel,Macros,Vba,为了提供一些背景资料,我环顾了一下Stack,试图找到一个解决问题的方法,但没有找到答案 我想做的是确定两本工作簿“工作簿A”和“工作簿B”中是否显示了相同的数字。如果两个工作簿中存在相同的数据,我希望工作簿B中的另一列中的数据能够自动填充到工作簿a中的某一列中 关于工作簿B的警告是,该文档将位于SharePoint网站上 工作簿A中数据所在的列为B。工作簿B中数据所在的列为C 如果两个工作簿中的数字相同,我想复制工作簿B中M列的数据,并将其放入工作簿A中的J列 任何帮助都将不胜感激 这是我

为了提供一些背景资料,我环顾了一下Stack,试图找到一个解决问题的方法,但没有找到答案

我想做的是确定两本工作簿“工作簿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
子更新w2()
尺寸w1作为工作表,w2作为工作表
尺寸c作为范围,FR作为长度
Application.ScreenUpdating=False
Set w1=工作手册(“4130 Sedgwick活动报告03212016\u GT.xlsb”)。工作表(“4130 Lincoln”)
Set w2=工作手册(“测试-伊顿缺勤详细报告04-15-2016(2)\u GT.xlsx”)。工作表(“活动地点”)
对于w1.范围内的每个c(“B3”,w1.范围(“J”和行数)。结束(xlUp))
FR=0
出错时继续下一步
FR=Application.Match(c,w2.列(“A”),0)
错误转到0
如果FR为0,则w2.范围(“M”和FR).值=c.偏移量(,-3)
下一个c
Application.ScreenUpdating=True
端接头

在您发布的代码中,有两行代码的组合将导致出现问题

这条线

For Each c In w1.Range("B3", w1.Range("J" & Rows.Count).End(xlUp))
If FR <> 0 Then w2.Range("M" & FR).Value = c.Offset(, -3)
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))
 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)
。。。表示循环通过“B3”到“J”范围内的所有单元格。“B”是工作表中的第二列

这条线

For Each c In w1.Range("B3", w1.Range("J" & Rows.Count).End(xlUp))
If FR <> 0 Then w2.Range("M" & FR).Value = c.Offset(, -3)
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))
 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)
。。。到这一行

For Each c In w1.Range("B3", w1.Range("J" & Rows.Count).End(xlUp))
If FR <> 0 Then w2.Range("M" & FR).Value = c.Offset(, -3)
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))
 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)
如果“另一列”始终是固定的(例如A列),则可以更改此行

For Each c In w1.Range("B3", w1.Range("J" & Rows.Count).End(xlUp))
If FR <> 0 Then w2.Range("M" & FR).Value = c.Offset(, -3)
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))
 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)
如果FR为0,则w2.范围(“M”和FR).值=c.偏移量(,-3)
。。。到这一行

For Each c In w1.Range("B3", w1.Range("J" & Rows.Count).End(xlUp))
If FR <> 0 Then w2.Range("M" & FR).Value = c.Offset(, -3)
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))
 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)
如果FR为0,则w2.Range(“M”和FR).Value=w1.Range(“A”和c.Row)

其中一项更改应该会使您的代码“正常工作”。

请参阅。我相应地更新了我的问题。请发布您的代码,并说明其不正常的原因。很难对此提供帮助。你的问题太广泛了-你不能做什么?我粘贴了我在上面的原始问题中找到的代码。