我有两个不同的工作簿,其中一个我想根据多个标准复制某些值。
在这个例子中,我将调用每个工作簿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
WB2:https://docs.google.com/spreadsheets/d/1vcfnluE_PSm5dEEeHuBPA9XRoP-VPQRk3YDE7ONS-NE/edit?usp=sharing
如果有人有任何建议,我会很高兴。
//问丹尼尔
答案 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位于不同的行中)。