Я пытаюсь создать функцию для копирования значений из одной таблицы на листе 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"
— это лист (по сути, банк значений), из которого сортируется функция.
Чтобы уточнить: значения в столбце 1 листа DIRECTORY находятся в том же порядке, что и значения в столбце 1 X-листа, или они перемешаны?
Пробовали ли вы новую функцию XLOOKUP, которая может возвращать несколько ячеек, например, в столбцах, если находит совпадение? Нет необходимости в VBA.
Xlookup, Vlookup, Index-Match и... Вы сравниваете значения листа DIRECTORY со значениями в столбце A листа X, и если они совпадают в первый раз, вы заполняете столбец K на листе X. Поэтому, если значения не совпадают, оставшаяся ячейка будет пустой. Просто вы можете скопировать Col A листа X в Col K листа X и использовать любую из вышеупомянутых функций. VBA не нужен :)
Чтобы уточнить, значения в столбце 1 листа DIRECTORY не соответствуют порядку столбца 1 X-листа. Кроме того, я пытаюсь сохранить формат ячейки на листе X таким же, как и на листе DIRECTORY.