首页 文章

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

提问于
浏览
0

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

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

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

到目前为止我所拥有的是这段代码,但它并没有真正实现它 . 因为我在这一部分得到了“超出范围”,设置sh2 = wb2.Sheets(c.Value) . 我猜测的是,它不能通过 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

    看起来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位于不同的行中) .

相关问题