Я работаю над проектом, в котором мне нужно проанализировать наличие персонала на основе 15-минутных периодов времени, их языковых навыков и их смен.У меня есть один лист, который выглядит так:
--Time-------English------German-----French
--06:15--------0------------0-----------0
--06:30--------0------------0-----------0
--06:45--------0------------0-----------0
И еще один лист, который выглядит следующим образом:
--Name-----Language-----Info--------Shift--------
--Joe B----English-----BlaBla---05:45 - 12:30---
--Al C-----English-----BlaBla---07:45 - 15:30---
--Jill T---English-----BlaBla---07:45 - 15:30---
Итак, мне нужно взять язык, на котором они говорят, их смещение (разделениев начальное и конечное время) и на основе языка, указанного в заголовке этого столбца (на первом приведенном выше листе), добавьте «1», если они говорят на этом языке и доступны в то время.
Нижекод, который у меня есть в настоящее время, который не делает этого для меня:
Function CalculateAvailability(The_Time As String, The_Info As Range, Current_Lang As String)
'The_Time is the current 15-minute period
'The_Info is the range of fields in sheet 2 with our information (A3:D5 above)
'Current_Lang is the current language heading
Dim The_Lang As String 'the language of the staff member
Dim The_Shift_Start As String 'obvious
Dim The_Shift_End As String 'also obvious
Dim stGotIt As String 'redundant, not used currently
Dim stCell As String 'for capturing the cell contents
Dim Counter As Integer 'our counter
Counter = 0
For Each r In The_Info.Rows
For Each c In r.Cells
stCell = c.Value
If InStr(1, stCell, ":", vbTextCompare) > 0 Then
The_Shift_Start = GetShiftStart(stCell) 'this code works
The_Shift_End = GetShiftEnd(stCell) 'this code works
End If
If InStr(1, stCell, Current_Lang, vbTextCompare) > 0 Then
The_Lang = Current_Lang 'seems redundant but how else to do the check?
Counter = 17 'test value - doesn't seem to reach here
End If
Next c
If The_Lang = Current_Lang Then
Counter = 5 'test value - doesn't seem to reach here either
End If
Next r
CalculateAvailability = "Time:" + The_Time + " - Start:" + The_Shift_Start + " - End:" + The_Shift_End + " - Avail. " + Counter 'for output purposes
End Function
Кажется, он не достигает важных частей моего кода, где я выполняю вычисления, которые вызывают отдельное (проверено ирабочая) функция, которая возвращает «1» или «0» на основе периода времени и времени начала и окончания смены.(Это было бы, где я указываю Counter = 5) Моя логика в приведенном выше коде неверна?Я понимаю, что тестирование языка кажется излишним и, вероятно, некорректным, но, как говорится в комментариях, я не мог переработать это более разумно.Одна вещь, которая меня интересует, заключается в том, что цикл For Loop сразу же переходит от «Next» обратно к связанному «For Each» или выполняет следующий код, и ТО затем переходит обратно?(Я знаю, что это не имеет большого смысла программно, но я не очень знаком с VB, поэтому не могу сказать наверняка, несмотря на то, насколько нелепым это кажется в свете моих знаний C / C # / C ++)
Вся помощь приветствуется!