Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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:粘贴到工作簿之间的匹配行中_Excel_Vba - Fatal编程技术网

VBA Excel:粘贴到工作簿之间的匹配行中

VBA Excel:粘贴到工作簿之间的匹配行中,excel,vba,Excel,Vba,我正在尝试开发代码来执行以下操作: 1)Copy cells K4: M4 in Workbook 1, Sheet 1 <- I can do this step; 2)Find a cell in Workbook2, Sheet1, column C that matches cell B4 in Workbook1, Sheet1; 3)Paste the copied values in columns P:R of the matching row in Workbook

我正在尝试开发代码来执行以下操作:

1)Copy cells K4: M4 in Workbook 1, Sheet 1 <- I can do this step;

2)Find a cell in Workbook2, Sheet1, column C that matches cell B4 in
Workbook1, Sheet1;

3)Paste the copied values in columns P:R of the matching row in
Workbook 2, Sheet 1 as determined in Step 2.

1)复制工作簿1第1页中的K4:M4单元格我对此进行了测试,结果成功了。这有助于你开始吗

Sub CopyToMatchedRow()
    Dim copyRng As Range, matchVal As Variant, matchRng As Range, matchRow As Integer

    Set copyRng = Worksheets("Sheet1").Range("K4:M4")
    Set matchRng = Worksheets("Sheet2").Range("C:C")
    matchVal = Worksheets("Sheet1").Range("B4")
    matchRow = matchRng.Find(What:=matchVal, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)

    copyRng.Copy Destination:=Worksheets("Sheet2").Range("P" & matchRow & ":R" & matchRow)
End Sub

如果我理解正确,您可以使用工作表公式而不是VBA来执行此操作。这是你会考虑的事情吗?我希望尽可能地自动化和简化工作。因此,理想情况下,我更愿意采用Visual Basic路线。我同意@SomeSillyName。你以前用过
Vlookup
吗?嗨,布拉德。我对Vlookup非常熟悉和熟悉。在这种情况下,我希望自动化工作过程,然而,vlookup不能满足我的需要。不过,谢谢你的建议。谢谢你!然而,我不能完全让它工作。我已将其修改为在工作簿之间切换,但收到一条运行时eror'13'类型不匹配消息。有什么想法吗?我更改了以下行:Set copyRng=工作簿(“工作簿1”).工作表(“Sheet1”).范围(“K4:M4”)Set matchRng=工作簿(“工作簿2”).工作表(“Sheet1”).范围(“C:C”)matchVal=工作簿(“工作簿1”).工作表(“Sheet1”).范围(“B4”)copyRng.复制目标:=工作簿(“工作簿2”).工作表(“Sheet1”).范围(“P”&匹配行和“:R”&matchRow)End Sub我也只是在同一工作簿中的工作表之间尝试了它,与共享的工作表完全相同,我收到了相同的错误消息:(Debug正在突出显示matchRow命令。如果1matchRow`给出错误,可能是因为它找不到匹配项。您的
matchVal
是否存在于
matchRng
中?是的,Sheet1中我的单元格B4与Sheet2中C列中的单元格完全匹配。我真的很困惑。您是否使用
match()手动测试过它)
电子表格中的函数?是否值得先检查一下?