首页 > 解决方案 > 从已关闭的工作簿中复制数据并粘贴(如果它们的数据相同)

问题描述

我是一家公司的实习生,基本上成为了技术支持(虽然比咖啡机更好)所以我试图让一个封闭的工作簿将数据复制到一个开放的工作簿中到目前为止这是我得到的代码,但我' if 语句有一些问题

Sub allergo()
    Dim lastRow As Long
    Dim bkBk1 As Workbook, wkBk2 As Workbook
    Dim wkSht As Object
    Dim mnt As String
    lr = wkBk2.Sheets(1).Range("R" & Rows.Count).End(xlUp).Row
    mnt = InputBox("Enter Filename")
    Set wkBk1 = ActiveWorkbook
    Set wkBk2 = Workbooks.Open("Documents\" & mnt & ".xlsx")

    For Each cell In wkBk1.Sheets(1).Range(wkBk1.Sheets(1).Cells(2, "R"), wkBk1.Sheets(1).Cells(lr, "R"))

    wkBk1.Sheets(1).Range("R1:R" & lr).Value = wkBk2.Sheets(1).Range("R1:R" & lastRow).Value

    wkBk2.Close
End Sub

基本上我有两个文件,它们具有相同的列,但在几周之间,行消失或出现,因为每一行都是具有特定编号的采购订单,在 R 行中我们添加评论,我希望 R 列中的评论复制到具有相同采购订单号的行上的新工作簿。虽然一些评论附加到不再存在于文件中的采购订单上,因此不再需要它们,并且一些采购订单已经移动,所以我不能只是复制粘贴。不确定 If 是一个好主意,因为它不会将我的 E 146 行与新工作簿的所有其他行进行比较,因此只测试 E146 关闭工作簿 = E146 新工作簿,而它应该测试 E146 关闭 = E147/E148 等。

这是关闭的工作簿: 关闭的工作簿

这是新的工作簿: 新的工作簿

谢谢您的帮助 !

对于这种我不确定的事情,也许 VLOOKUP 是可能的..

Sub strilltrying()
Dim ws As Worksheet
Set ws = Sheets("Sheet 1")
Dim lr As Long
lr = ws.Cells(Rows.Count, "B").End(xlUp).Row



Cells(lr, "R").Formula = "=VLOOKUP(E2,'H:\Documents\[OPEN ORDERS 16.07.2018.xlsx]Sheet 1'!$E:$R,14)"


End Sub

这是有效但不完全的 vlookup 公式,因为我必须采用两个不同的变量。我发现 index + match 可以做到,但我很难弄清楚。我需要一个索引公式,以 vlookup 的方式比较列 E 和列 J。

标签: vbaexcel

解决方案


Sub allergo()
Dim lastRow As Long
Dim bkBk1 As Workbook, wkBk2 As Workbook
Dim wkSht As Object
Dim mnt As String
lr = wkBk2.Sheets(1).Range("R" & Rows.Count).End(xlUp).Row
mnt = InputBox("Enter Filename")
Set wkBk1 = ActiveWorkbook
Set wkBk2 = Workbooks.Open("Documents\" & mnt & ".xlsx")

For Each cell In wkBk1.Sheets(1).Range(wkBk1.Sheets(1).Cells(2, "R"), wkBk1.Sheets(1).Cells(lr, "R"))
if cell = "" then 'add your clause here
wkBk1.Sheets(1).Range("R1:R" & lr).Value = wkBk2.Sheets(1).Range("R1:R" & lastRow).Value

end if
next cell
wkBk2.Close
End Sub

您的要求并不完全清楚,如果可能的话,我也会避免循环。


推荐阅读