Excel 如何在将数据从一个工作簿复制到另一个工作簿时使值动态

Excel 如何在将数据从一个工作簿复制到另一个工作簿时使值动态,excel,vba,Excel,Vba,我必须将产品类别A01的数据复制到另一个名为A01的工作簿中。但产品类别也有A011、A012、A013等数据。因此,我想让它成为一种动态 我试过: Sub left() vcounter = Workbooks("macro tool.xlsm").Worksheets("sheet1").Cells(Rows.count, 1).End(xlUp).row For k = 1 To 9 For j = 2 To vcounter If Workbooks("macro tool.xl

我必须将产品类别A01的数据复制到另一个名为A01的工作簿中。但产品类别也有A011、A012、A013等数据。因此,我想让它成为一种动态

我试过:

Sub left()
vcounter = Workbooks("macro tool.xlsm").Worksheets("sheet1").Cells(Rows.count, 1).End(xlUp).row
For k = 1 To 9
For j = 2 To vcounter
    If Workbooks("macro tool.xlsm").Worksheets("sheet1").Cells(j, 3).Value = "A01" & k Then
        Workbooks("macro tool.xlsm").Worksheets("sheet1").Rows(j).Copy
        Workbooks("A.xlsx").Worksheets("A01").Activate
        vcounter1 = Workbooks("A.xlsx").Worksheets("A01").Cells(Rows.count, 1).End(xlUp).row
        Workbooks("A.xlsx").Worksheets("A01").Cells(vcounter1 + 1, 1).Select
        ActiveSheet.PasteSpecial
    End If
Next j
Next k
End Sub
该程序的输出为:

A011
A011
A011
A011
A012
A012
A012
A012
A012
A012
A012
A012
A013
A013
A013
A013
A013
A013
A013
A013
A013
A014
A014
A014
A015
A015
A015
A015
A015
A015
A016
A016
A016
A016
A016
A016
A016
A016
A017
A017
A017
A017
A017
A017
A018
A018
A018
A018
A018
A018
A018
A019
A019
A019
A019
A019
并且没有给出

A01
我编写了以下代码:

Sub left()
vcounter = Workbooks("macro tool.xlsm").Worksheets("sheet1").Cells(Rows.count, 1).End(xlUp).row

For j = 2 To vcounter
    If Workbooks("macro tool.xlsm").Worksheets("sheet1").Cells(j, 3).Value = left(Range("C" & j), 3) = "A01" Then
        Workbooks("macro tool.xlsm").Worksheets("sheet1").Rows(j).Copy
        Workbooks("A.xlsx").Worksheets("A01").Activate
        vcounter1 = Workbooks("A.xlsx").Worksheets("A01").Cells(Rows.count, 1).End(xlUp).row
        Workbooks("A.xlsx").Worksheets("A01").Cells(vcounter1 + 1, 1).Select
        ActiveSheet.PasteSpecial
    End If
Next j
End Sub
但这不起作用,因为我使用了带值的左函数

我希望两个值都具有产品代码A01以及其他值,这就是为什么我尝试使用left函数,但代码不起作用。它没有给出任何错误,也没有给出任何输出。

试试看

If left(Workbooks("macro tool.xlsm").Worksheets("sheet1").Cells(j, 3).Value,3) = left(Range("C" & j), 3) = "A01" Then
次左() vcounter=工作簿(“macro tool.xlsm”)。工作表(“sheet1”)。单元格(Rows.count,1)。结束(xlUp)。行 对于k=1到9 工作簿(“宏工具.xlsm”)。工作表(“表1”)。行(1)。复制工作簿(“A.xlsx”)。工作表(“A0”和k)。行(1) 对于j=2至V计数器 如果左侧(工作簿(“macro tool.xlsm”)。工作表(“sheet1”)。范围(“C”和“j”),3)=“A0”和“k”,则 工作簿(“宏工具.xlsm”)。工作表(“表1”)。行(j)。复制 工作簿(“A.xlsx”)。工作表(“A0”&k)。激活 vcounter1=工作簿(“A.xlsx”)。工作表(“A0”和k)。单元格(Rows.count,1)。结束(xlUp)。行 工作簿(“A.xlsx”)。工作表(“A0”&k)。单元格(vcounter1+1,1)。选择 ActiveSheet.PasteSpecial 如果结束 下一个j 下一个k
End Sub

这一个不起作用。但是我做了一些改变,然后它工作了。感谢you@aakanshashankhala请把有用的东西贴出来作为答案。Stack Overflow是一个问答库-没有答案的问题对网站质量很差。