Функция сортировки VBA между двумя листами

avatar
Michael
1 июля 2021 в 20:52
30
0
0

Я пытаюсь создать функцию для копирования значений из одной таблицы на листе Excel в соответствующие значения в другую таблицу на отдельном листе. Это код, который я написал до сих пор, однако он сортирует только определенные значения и оставляет остальные пустыми. Кто-нибудь знает, как я могу это улучшить?

Sub ctppll()

    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    
    For i = 2 To 50
        For j = 2 To 500
            If Worksheets("X").Cells(i, 1).Value = Worksheets("DIRECTORY").Cells(j, 1).Value Then
               For k = 3 To 9 Step 1
                   Worksheets("X").Cells(i, k).Value = Worksheets("DIRECTORY").Cells(j, k).Value
               Next k
            End If
        Next j
    Next i
    
End Sub

"X" — это лист, в который я пытаюсь отсортировать значения, а "DIRECTORY" — это лист (по сути, банк значений), из которого сортируется функция.

Источник
Slaqr
1 июля 2021 в 21:24
0

Чтобы уточнить: значения в столбце 1 листа DIRECTORY находятся в том же порядке, что и значения в столбце 1 X-листа, или они перемешаны?

dbb
1 июля 2021 в 23:43
1

Пробовали ли вы новую функцию XLOOKUP, которая может возвращать несколько ячеек, например, в столбцах, если находит совпадение? Нет необходимости в VBA.

Naresh
2 июля 2021 в 05:58
0

Xlookup, Vlookup, Index-Match и... Вы сравниваете значения листа DIRECTORY со значениями в столбце A листа X, и если они совпадают в первый раз, вы заполняете столбец K на листе X. Поэтому, если значения не совпадают, оставшаяся ячейка будет пустой. Просто вы можете скопировать Col A листа X в Col K листа X и использовать любую из вышеупомянутых функций. VBA не нужен :)

Michael
6 июля 2021 в 17:52
0

Чтобы уточнить, значения в столбце 1 листа DIRECTORY не соответствуют порядку столбца 1 X-листа. Кроме того, я пытаюсь сохранить формат ячейки на листе X таким же, как и на листе DIRECTORY.

Ответы (0)