基于多个标准VBA Excel从一个工作表复制到另一个工作簿

时间:2016-10-05 19:29:25

标签: excel-vba criteria copy-paste multiple-conditions vba

我有两个不同的工作簿,其中一个我想根据多个标准复制某些值。

在这个例子中,我将调用每个工作簿wb1和wb2。作为示例,将在帖子的末尾添加共享的wb链接,以便更清楚地了解它的外观......

所以在wb1中我有一个名字列表,在wb2中也有自己的表格。 当我打开wb1时,我想复制名为" NPS"的单元格下的值。对于wb2中每张相同名称的表格,在wb2中,我有不同的月份和一些其他的变量,我必须添加手册。所以我想要它做的是将值从NPS复制到NPS下的数据,并将其与wb1中提到的同一个月匹配。

到目前为止我所拥有的是这段代码,但它并没有真正实现它。因为我得到了超出范围的"属于"在这一部分设置sh2 = wb2.Sheets(c.Value)。我猜测的是,它不能通过价值识别纸张,即使它的命名也是相同的。

Sub NPS()
Dim sh1 As Worksheet, sh2 As Worksheet, c As Range, wb2 As Workbook, fn As Range
Set sh1 = ThisWorkbook.ActiveSheet
Set wb2 = Workbooks.Open("F:\Excel\Chef\NPS Samtal 777 agentnivå.xlsx")
    For Each c In sh1.Range("C8", sh1.Cells(Rows.Count, 3).End(xlUp))
        Set sh2 = wb2.Sheets(c.Value)
        Set fn = sh2.Rows(24).Find(sh1.Range("B5").Value, , xlValues, xlWhole)
        If Not fn Is Nothing Then
               fn.Offset(1) = sh1.Range("E5").Value
        End If
    Next
End Sub

WB1:https://docs.google.com/spreadsheets/d/14CyC2CQWWH-Bxifw2EBni0Uj2YjlN-kIUVki2rle3LA/edit#gid=1398323909

WB2:https://docs.google.com/spreadsheets/d/1vcfnluE_PSm5dEEeHuBPA9XRoP-VPQRk3YDE7ONS-NE/edit?usp=sharing

如果有人有任何建议,我会很高兴。

//问丹尼尔

1 个答案:

答案 0 :(得分:0)

似乎Excel正在查找错误文件中的工作表。您需要在插入值之前激活正确的工作簿。像这样:

Sub NPS()
Dim sh1 As Worksheet, sh2 As Worksheet, c As Range, wb2 As Workbook, fn As Range
Set sh1 = ThisWorkbook.ActiveSheet
Set wb2 = Workbooks.Open("F:\Excel\Chef\NPS Samtal 777 agentnivå.xlsx")
    For Each c In sh1.Range("C8", sh1.Cells(Rows.Count, 3).End(xlUp))
         wb2.Activate       
         Set sh2 = wb2.Sheets(c.Value)
         Set fn = sh2.Rows(24).Find(sh1.Range("B5").Value, , xlValues, xlWhole)
         If Not fn Is Nothing Then
                fn.Offset(1) = sh1.Range("E5").Value
         End If
     Next
End Sub

旁注:ppsTest文件中的工作表未对齐(示例1中的NPS -tal位于不同的行中)。