Как найти конкретное значение в 2 таблицах и скопировать на новый лист с помощью VBA - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь добиться следующего.

Использование одного уникального идентификатора для поиска в другой справочной таблице и печать всей строки на новом листе.

Я застрял на второмfor loop, цикл по столбцу для получения уникального идентификатора.

Надеюсь, кто-нибудь может мне помочь.

_____ Edit_____

Я думаю, что я был слишком расплывчат в своем запросе, поэтому ярешил сделать его наглядным.

Наглядное описание

Private Sub CommandButton2_Click()

Worksheets("Dependency Table").Range("A2:K99").ClearContents
a = Worksheets("sheet1").Cells(Rows.Count, 1).End(xlUp).Row


For i = 1 To a

If ActiveCell.value = Worksheets("Dependency Matrix").Cells(i, 1).value Then

    For k = 1 To 5

        If Worksheets("Dependency Matrix").Cells(Selection.Row, k).value = Worksheets("Sheet1").Cells(i, 4).value Then

                Worksheets("Sheet1").Rows(i).Copy
                Worksheets("Dependency Table").Activate
                b = Worksheets("Dependency Table").Cells(Rows.Count, 1).End(xlUp).Row
                Worksheets("Dependency Table").Cells(b + 1, 1).Select
                ActiveSheet.Paste
                Worksheets("Dependency Table").Activate

        End If

    Next

End If

Next

Application.CutCopyMode = False

End Sub

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Я понял, как достичь того, что я хотел.Хотя метод может быть немного элементарным.

Решили пока не делать destrange.value=sourcerange.value.Просто нужно быстрое решение, чтобы сделать эту работу.

Private Sub CommandButton2_Click()

Worksheets("Dependency Table").Range("A2:K99").ClearContents
a = Worksheets("Dependency Matrix").Cells(Rows.Count, 1).End(xlUp).Row
c = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
d = Worksheets("Dependency Matrix").Cells(1, Columns.Count).End(xlUp).Column

For i = 1 To a

If ActiveCell.Value = Worksheets("Dependency Matrix").Cells(i, 1).Value Then

    For k = 1 To 30

        For r = 1 To c

            If Worksheets("Dependency Matrix").Cells(i, k).Value = Worksheets("Sheet1").Cells(r, 4).Value Then

                Worksheets("Sheet1").Rows(r).Copy
                Worksheets("Dependency Table").Activate
                b = Worksheets("Dependency Table").Cells(Rows.Count, 1).End(xlUp).Row
                Worksheets("Dependency Table").Cells(b + 1, 1).Select
                ActiveSheet.Paste

             End If
        Next

    Next

End If

Next

Application.CutCopyMode = False
ActiveSheet.Range("a:k").RemoveDuplicates Columns:=Array(3), Header:=xlGuess

End Sub
0 голосов
/ 07 декабря 2018

Похоже, что вы, возможно, перевернули строку в сравниваемых ячейках во втором цикле for

Вместо:

If Worksheets("Dependency Matrix").Cells(Selection.Row, k).value = Worksheets("Sheet1").Cells(i, 4).value Then

try:

If Worksheets("Dependency Matrix").Cells(i, k).value = Worksheets("Sheet1").Cells(Selection.Row, 4).value Then

Кроме того, как сказал Натан в вопросах, вам не нужно выбирать / копировать / вставлять, вместо этого просто установите новый диапазон, равный диапазону в столбце внутри оператора for.

Worksheets("Dependency Table").Cells(b + 1 &":"& b+1).value = Worksheets("Sheet1").Rows(i &":"& i).value

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...