Фон:
- несколько листов, заполненных сотрудниками и возможные тренинги
- Работы, отмеченные знаком "x", выполнены сотрудником
Цель:
- лист, где я могу вставить номер сотрудника и получить список выполненных тренингов за каждый год
Я не часто использую VBA, но я старался изо всех сил с этим.
Мне надоело строить функцию, которая (теоретически) должна использовать заданные параметры для получения названий тренировок. Я не могу заставить его работать, не дав мне #VAULE!
.
Function TS(PersNum As String, Numbers As Range, Trainings As Range, Optional SearchRow As Range)
TrainRow = Trainings.Rows(1) 'all trainings are listed in this row
TS = ""
For Each cell In Numbers 'search in column for the employee number
If cell.Value = PersNum Then
cell.Row = SearchRow 'if match -> set row of the cell as range for SearchRow
Else
Resume Next
End If
Next cell
For Each cell2 In SearchRow 'search every cell in SearchRow for "x"
If cell2.Value = "x" Then
TS = TS & Cells(TrainRow, cell2.Cloumn).Value & Chr(10) 'match -> return trainingsname with a carriage return
Else
Resume Next
End If
Next cell2
End Function
Я ожидал, что он найдет указанное число в столбце, указанном в параметре. Как только он найдет совпадение, он должен вставить строку столбца в переменную «SearchRow» и выйти из поиска. После этого он должен просмотреть строку и дать мне заголовок каждого столбца, помеченного знаком «x» в виде текста в ячейке, в которой находится функция.
* * 1 022 Пример: * 1 023 *
Это рабочий лист, над которым я работаю, ячейка, в которую я ввожу номер сотрудника, и ячейка с этой функцией: =TS(C2;'2019'!B:B;'2019'!3:3)
Для каждого года я хочу, чтобы список собирался.
Данные, которые я хочу собрать, выглядят так:
Каждый заголовок столбца, помеченный «х» в строке сотрудника, должен быть добавлен в список.
В конце я хотел бы иметь список под ячейкой года в поисковом листе с переносом слов после каждой тренировки