Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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 将数据从一个excel工作簿复制到另一个工作簿_Vba_Excel - Fatal编程技术网

Vba 将数据从一个excel工作簿复制到另一个工作簿

Vba 将数据从一个excel工作簿复制到另一个工作簿,vba,excel,Vba,Excel,例如,如果我想从工作簿1工作表1复制数据(“B1:B8”)并将其粘贴到另一个工作簿工作表1的(“D1:D8”)中,但这必须通过引用或比较工作簿1的单元格(A1:A8)来完成,并且单元格(C1:C8)只有相同的值,然后粘贴,否则跳过或不执行任何操作 例:我排好了第一张书单 COL A COL B app yes conf pass gif no pic fail bit yes map yes conf yes bit no 看起来你

例如,如果我想从工作簿1工作表1复制数据(“B1:B8”)并将其粘贴到另一个工作簿工作表1的(“D1:D8”)中,但这必须通过引用或比较工作簿1的单元格(A1:A8)来完成,并且单元格(C1:C8)只有相同的值,然后粘贴,否则跳过或不执行任何操作

例:我排好了第一张书单

COL A COL B app yes conf pass gif no pic fail bit yes map yes conf yes bit no
看起来你想从一个范围看另一个范围?如果是这样,您可以使用类似于以下内容的方法,对照A列和B列中的主值查找C列中的每个值:

Sub LookupRange()
    On Error Resume Next
    For i = 1 To 8
        ActiveSheet.Range("D" & i) = _
            Application.WorksheetFunction.VLookup( _
                ActiveSheet.Range("C" & i), _
                ActiveSheet.Range("A1:B8"), _
                2, _
                False)
    Next i
End Sub
它将在单元格C1..C8中循环,并在单元格A1..A8中查找每个值。如果找到匹配项,则会将相应的值复制到D列

对于上面的示例,您将得到:


你所需要做的就是修改代码,使之与单独的工作表一起工作。

这句话让我头疼:
因此,在D列中,我必须只粘贴A列和C列相等的值,如果它们不相等,请跳过或不粘贴D列中的任何内容。
对不起,在D列(“D1:D8”)中粘贴工作簿1第1页B列(“B1:B8”)中的值只有当A列(工作簿1第1页)等于C列(工作簿2第1页)时,如果它们不相等,则不粘贴任何内容
Sub CopyInput2Output()

    Dim wbkSRC As Workbook
    Dim wbkDES As Workbook
    Dim strNameSheetSRC As String
    Dim strNameSheetDES As String

    'strSrcFile = "C:\src.xls"
    'strDesFile = "C:\des.xls"
    Set wbkSRC = Workbooks.Open(strSrcFile)
    Set wbkDES = Workbooks.Open(strDesFile)
    'Set wbkSRC = ThisWorkbook
    'Set wbkDES = ThisWorkbook

    strNameSheetSRC = 1   '  "input"
    strNameSheetDES = 1   '  "output"



    ' your selection : Sheets(1)
    wbkSRC.Worksheets(strNameSheetSRC).Range("A1:A8").Copy

    ' your selection : Sheets(1)
    With wbkDES.Worksheets(strNameSheetSRC)
        Range("C1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    End With

    MsgBox ("Just a check : CopyInput2Output()")

End Sub
Sub LookupRange()
    On Error Resume Next
    For i = 1 To 8
        ActiveSheet.Range("D" & i) = _
            Application.WorksheetFunction.VLookup( _
                ActiveSheet.Range("C" & i), _
                ActiveSheet.Range("A1:B8"), _
                2, _
                False)
    Next i
End Sub
Sub CopyInput2Output()

    Dim wbkSRC As Workbook
    Dim wbkDES As Workbook
    Dim strNameSheetSRC As String
    Dim strNameSheetDES As String

    'strSrcFile = "C:\src.xls"
    'strDesFile = "C:\des.xls"
    Set wbkSRC = Workbooks.Open(strSrcFile)
    Set wbkDES = Workbooks.Open(strDesFile)
    'Set wbkSRC = ThisWorkbook
    'Set wbkDES = ThisWorkbook

    strNameSheetSRC = 1   '  "input"
    strNameSheetDES = 1   '  "output"



    ' your selection : Sheets(1)
    wbkSRC.Worksheets(strNameSheetSRC).Range("A1:A8").Copy

    ' your selection : Sheets(1)
    With wbkDES.Worksheets(strNameSheetSRC)
        Range("C1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    End With

    MsgBox ("Just a check : CopyInput2Output()")

End Sub