Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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
Excel 使用VBA按行更新数据直到最后一行_Excel_Vba - Fatal编程技术网

Excel 使用VBA按行更新数据直到最后一行

Excel 使用VBA按行更新数据直到最后一行,excel,vba,Excel,Vba,我有两个优点。 Excel1有7列,其中3列已填充。Excel2还有7列全部填充。 Excel2的前3列包含来自Excel1的数据。Excel1大约有50行,而Excel2有10行。 我想将所有数据从Excel2更新到Excel1(更新整行) 我想将这10行更新为Excel2(它已经有来自Excel2的前3列数据)。在更新行宏时,应检查前三列的数据(它应完全匹配)。 请帮忙 我试图在这里编写代码 但它显示了格式化错误。很抱歉我可以上传到这里。完成了… 我使用Do-until循环,如下所示: Su

我有两个优点。
Excel1有7列,其中3列已填充。Excel2还有7列全部填充。
Excel2的前3列包含来自Excel1的数据。Excel1大约有50行,而Excel2有10行。
我想将所有数据从Excel2更新到Excel1(更新整行)
我想将这10行更新为Excel2(它已经有来自Excel2的前3列数据)。在更新行宏时,应检查前三列的数据(它应完全匹配)。 请帮忙

我试图在这里编写代码
但它显示了格式化错误。很抱歉我可以上传到这里。

完成了…
我使用Do-until循环,如下所示:

Sub Macro6()
    Dim rw As Integer, clm As Integer, clcnt1 As Integer, clcnt2 As Integer, clmcnt As Integer
    Dim str As String, str1 As String, str2 As String
    rw = 1
    clm = 1
    clmcnt = 0

    Do
        clcnt1 = Range("B1").End(xlDown).Row
        Rows("1:1").Select
        Range("E1").Activate
        Selection.AutoFilter
        Range("B" & rw).Select
        Windows("dfg.xlsx").Activate
        clcnt2 = Range("B1").End(xlDown).Row
        clmcnt = cntcnt + 1
        str = Cells(rw, clm + 1).Value
        Selection.Copy
        Windows("testing1.xlsm").Activate
        ActiveSheet.Range("$B$1:$E$" & clcnt1).AutoFilter Field:=1, Criteria1:=str, Operator:=xlAnd
        Windows("dfg.xlsx").Activate
        Range("D" & rw).Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("testing1.xlsm").Activate
        Range("D" & rw).Select
        str1 = Cells(rw, clm + 3).Value
        ActiveSheet.Range("$B$1:$E$" & clcnt1).AutoFilter Field:=3, Criteria1:=str1, Operator:=xlAnd
        Range("E" & rw).Select
        Windows("dfg.xlsx").Activate
        Range("E" & rw).Select
        str2 = Cells(rw, clm + 4).Value
        Application.CutCopyMode = False
        Selection.Copy
        Windows("testing1.xlsm").Activate
        ActiveSheet.Range("$B$1:$E$" & clcnt1).AutoFilter Field:=4, Criteria1:=str2, Operator:=xlAnd
        Windows("dfg.xlsx").Activate
        Rows(rw).Select
        Range("E" & rw).Activate
        Application.CutCopyMode = False
        Selection.Copy
        Windows("testing1.xlsm").Activate
        Rows(rw + 1).Select
        Range("E" & rw + 1).Activate
        ActiveSheet.Paste
        Range("E" & rw).Select
        Application.CutCopyMode = False
        Selection.AutoFilter
        rw = rw + 1
        clcnt2 = clcnt2 + 1
    Loop Until rw = clcnt2
    ActiveWorkbook.Save
End Sub
嘿,现在完成了…
我使用下面的代码获取过滤数据的行号,然后根据该行号进行必要的更新
ActiveSheet.Range(“$B$2:$E$135”)。偏移量(1,0)。特殊单元格(xlCellTypeVisible)。行


感谢大家的帮助

我们是
Excel1
Excel2
工作簿或工作表吗?你能给我们看看你目前掌握的代码吗?@AlexP:Excel1和Excel2是不同的workbooks@rwisch45Sub Macro3()'Macro3宏行(“2:2”)。选择范围(“C2”)。激活选择。AutoFilter Flname=InputBox(“输入文件名:”、“创建新文件…”)窗口(Flname)。激活范围(“B1”)。选择选择选项。复制窗口(“testing1.xlsm”)。激活活动表。范围($A$2:$H$35”)。自动筛选字段:=2,标准1:=“=abc”、0)运算符:=xlAnd窗口(“dfg.xlsx”)。激活范围(“D1”).Select Application.CutCopyMode=假选择。复制窗口(“testing1.xlsm”)。激活继续------->ActiveSheet.Range($A$2:$H$35”)。自动筛选字段:=4,标准1:==15-Jun-13”,运算符:=xlAnd窗口(“dfg.xlsx”)。激活范围(“E1”)。选择Application.CutCopyMode=假选择。复制窗口(“testing1.xlsm”)。激活ActiveSheet.Range($A$2:$H$35”)。自动筛选字段:=5,标准1:==A“,u运算符:=xlAnd窗口(“dfg.xlsx”)。激活行(“1:1”)。选择范围(“E1”)。激活应用程序。CutCopyMode=假选择。复制窗口(“testing1.xlsm”)。激活范围(“A2”).选择ActiveSheet.Pasteam现在面临一个问题…它直接按顺序更新行,而不是按筛选的行!-(如何解决?