как сделать значение динамическим при копировании данных из одной рабочей книги в другую - PullRequest
1 голос
/ 29 октября 2019

Мне нужно скопировать данные категории продукта 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 и другие значения, поэтому я попытался использовать левую функцию, но код не работает. это не дает никакой ошибки, но также не дает никакого вывода тоже.

Ответы [ 2 ]

0 голосов
/ 30 октября 2019

Sub left () vcounter = Workbooks ("macro tool.xlsm"). Worksheets ("sheet1"). Ячейки (Rows.count, 1) .End (xlUp) .row Для k = от 1 до 9 рабочих книг ("macro tool.xlsm "). Рабочие листы (" sheet1 "). Строки (1). Копировать рабочие книги (" A.xlsx "). Рабочие листы (" A0 "& k). Строки (1) Для j = 2 До vcounter Если осталось(Workbooks ("macro tool.xlsm"). Worksheets ("sheet1"). Range ("C" & j), 3) = "A0" & k Then Workbooks ("macro tool.xlsm"). Worksheets ("sheet1") .Rows (j). Копировать рабочие книги (" A.xlsx "). Рабочие листы (" A0 "& k). Активировать vcounter1 = Рабочие книги (" A.xlsx "). Рабочие листы (" A0 "& k) .Cells (Rows.count, 1) .End (xlUp) .row Рабочие книги ("A.xlsx"). Рабочие листы ("A0" & k). Ячейки (vcounter1 + 1, 1). Выберите ActiveSheet.PasteSpecial End If Next j Далее kEnd Sub

0 голосов
/ 29 октября 2019

Попробуйте

If left(Workbooks("macro tool.xlsm").Worksheets("sheet1").Cells(j, 3).Value,3) = left(Range("C" & j), 3) = "A01" Then
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...