С помощью этого листа1 есть список значений,
Мне нужно получить статус «Выполняется» и «Завершено» на основе идентификатора и списка уроков.
Статус из листа1 должен быть вставлен в соответствии с идентификатором и темой в лист2 с помощью VBA. Может ли кто-нибудь помочь по этой теме для достижения результатов?
2 ответа
Просто пример возможного решения (или, может быть, подскажет):
Sub test()
Dim dic As Object: Set dic = CreateObject("Scripting.Dictionary")
dic.comparemode = vbTextCompare
Dim src As Worksheet: Set src = Sheet1
Dim dest As Worksheet: Set dest = Sheet2
Dim id As Range, Topic As Range, Status As Range
Dim searchStr1$, searchStr2$
With src
Set id = .Rows(1).Find("ID") 'assume that header in row 1
Set Topic = .Rows(1).Find("Topic") 'assume that header in row 1
Set Status = .Rows(1).Find("Status") 'assume that header in row 1
Set rng = .Range(id.Offset(1), .Cells(.Rows.Count, id.Column).End(xlUp))
For Each cl In rng
dic.Add cl.Value2 & .Cells(cl.Row, Topic.Column).Value2, _
.Cells(cl.Row, Status.Column).Value2
Next cl
End With
With dest
Set rng = .Range(.[A2], .Cells(.Rows.Count, id.Column).End(xlUp))
For Each cl In rng
searchStr1 = cl.Value2 & .[B1].Value2
searchStr2 = cl.Value2 & .[C1].Value2
If dic.exists(searchStr1) Then cl.Offset(, 1).Value2 = dic(searchStr1)
If dic.exists(searchStr2) Then cl.Offset(, 2).Value2 = dic(searchStr2)
Next cl
End With
End Sub
Попробуйте эту формулу в Sheet2 после внесения изменений в правильные листы и диапазоны, затем заполните вправо и вниз.
Похожие вопросы
Новые вопросы
excel
Только для вопросов по программированию для объектов или файлов Excel или для разработки сложных формул. Вы можете объединить тег Excel с VBA, VSTO, C #, VB.NET, PowerShell, OLE-автоматизацией и другими тегами и вопросами, связанными с программированием, если это применимо. Общая помощь по MS Excel для функций одного листа доступна в Super User.