Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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
Vba 从关闭的工作簿复制数据,如果它们是公共数据,则粘贴_Vba_Excel - Fatal编程技术网

Vba 从关闭的工作簿复制数据,如果它们是公共数据,则粘贴

Vba 从关闭的工作簿复制数据,如果它们是公共数据,则粘贴,vba,excel,Vba,Excel,我是一家公司的实习生,基本上成为了技术支持人员(不过比咖啡机要好) 所以我试图得到一个关闭的工作簿,将数据复制到一个打开的工作簿中 到目前为止,这是我得到的代码,但是我对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).R

我是一家公司的实习生,基本上成为了技术支持人员(不过比咖啡机要好) 所以我试图得到一个关闭的工作簿,将数据复制到一个打开的工作簿中 到目前为止,这是我得到的代码,但是我对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 closed workbook=E146 newworkbook,而它应该测试E146 closed=E147/E148等

这是已关闭的工作簿:

这是新工作簿:

谢谢你的帮助

我不确定这类事情可能会发生什么

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列

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

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

什么
if
语句?你可以把公式放进去做这个?里面没有,因为我不知道怎么放进去..我添加了图片让它更清楚,因此,我需要将注释从第一行复制粘贴到第二行,并将它们放在正确的位置。如果一行由于顺序不再存在而消失,我希望代码什么也不做