Я искал что-то похожее на то, что я спрашиваю, и, к сожалению, нет ничего похожего на то, что я ищу.
У меня есть уникальный набор данных здесь на листе (2): Цель состоит в том, чтобы вернуть значения в выделенных синих столбцах, если они совпадают с «Элементом №» для поля, выбранного в раскрывающемся списке имен блоков на листе (1).Смотрите лист (1) здесь: Лист (1) Настройка .
Пункт № на листе (1) находится в B3: B12 на листе (1).- Я также добавил еще один список, в котором я хотел бы, чтобы мой код выполнялся В столбце рядом с этим есть пробел, где будут размещены соответствующие элементы в синем цвете.
Я пытаюсьДля этого используйте For Loops.Я понимаю, что набор данных странный, но я хочу сохранить его таким, чтобы его можно было просто решить (а также потому, что у меня похожий набор данных большего размера, и я просто использую его в качестве тестового прогона) ... Мой код такЭто так:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
' In order to run code on sheet without a button or enabling in a module
Set KeyCells = Range("A1")
If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
Dim i, j As Long
Dim n As Long
Dim box As String
Set sh2 = ThisWorkbook.Sheets(2)
Set rn2 = sh2.UsedRange
box = Sheets(1).Cells.Range("A1")
Dim k1 As Long
k1 = rn2.Rows.Count + rn2.Row - 1
n = 0
For i = 1 To k1
If Sheets(2).Cells(1, i) = box Then
If n = 0 Then
Sheets(1).Cells(3, 3).Value = Sheets(2).Cells(i, 2)
n = n + 1
End If
ElseIf n > 0 Then
For j = 3 To n + 2
If Sheets(2).Cells(2, i).Value = Sheets(1).Cells(j, 2).Value Then
If Sheets(2).Cells(2, i).Value <> Sheets(1).Cells(j, 2).Value Then
x = x
Else
x = x + 1
End If
End If
Next
If x = 0 Then
Sheets(1).Cells(3 + n, 3).Value = Sheets(2).Cells(2, i).Value
n = n + 1
End If
End If
x = 0
Next
End If
End Sub
Пожалуйста, дайте мне знать, что вы, эксперты, думаете!