Я придумал этот маленький код:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lastRow, targetCell, sourceRng, cell, nameRng, startRng, ddownCell As Range
Set ddownCell = Worksheets("Sheet2").Range("B1")
Set sourceRng = Worksheets("Sheet1").Range("C2:O10")
Set nameRng = Worksheets("Sheet1").Range("A2:A10")
Set startRng = Worksheets("Sheet1").Range("B2:B10")
Set targetCell = Worksheets("Sheet2").Range("A5")
If Not Application.Intersect(ddownCell, Range(Target.Address)) Is Nothing Then
With Worksheets("Sheet2") '
lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row '
If lastRow > 3 Then 'clears the content of previous search
.Range("A5:B" & lastRow).ClearContents '
End If '
End With '
For Each cell In sourceRng
If cell.Value = ddownCell.Value Then
targetCell.Value = nameRng.Rows(cell.Row - 1).Value
targetCell.Offset(0, 1).Value = startRng.Rows(cell.Row - 1).Value
Set targetCell = targetCell.Offset(1, 0)
End If
Next cell
End If
End Sub
Имена листов и диапазонов ячеек корректируются по образцу, который вы опубликовали, и его необходимо отрегулировать.
Этот код должен быть вставлен в лист 2 в редакторе VBA.
Да, есть способ сделать это. Вы сами что-то пробовали? – harun24hr
Да, я пробовал. Я провел все утро. Я попробовал сначала сводную таблицу, но я не смог получить результат, который я получил. – danjswade
Поделитесь некоторыми образцами данных и ожидаемым выходом. Было бы лучше, если бы вы могли поделиться образцом файла excel. Некоторые ввод и вывод. – harun24hr