#excel #vba #excel-formula
Вопрос:
Поэтому у меня есть следующая таблица, показанная ниже, в которой используется время организации встреч для клиентов компании. Я добавил столбец «Статус», в котором используется следующая формула для определения наличия «Столкновения» или «Отсутствия столкновения» путем сравнения столбцов C, D и E между строками 8 и 9 (что в данном случае имеет место столкновение, как показано на следующем изображении).
=IF(C9<>C8,"No Clash",IF(D9<>D8, "No Clash", IF(E9<>E8, "No Clash", "Clash")))
Мой вопрос; есть ли способ изменить эту формулу, которая в настоящее время находится в ячейке F8, чтобы приведенная выше формула применялась ко всем строкам в столбцах C, D и E, за исключением любых значений столбцов в строке 8.
Комментарии:
1. Я не понимаю, можете ли вы дать ожидаемый результат и объяснение?
2. @Euler’S Disgracedstepchild, поэтому моя цель состоит в том, чтобы для каждой строки в столбце «Статус» я хотел выполнить проверку, которая сравнивает время начала, время окончания и комнату собраний для каждой строки со всеми строками в таблице, чтобы, если одна и та же комната собраний забронирована для данного времени начала и времени окончания, столбец «Статус» выведет «Столкновение» в результате
3. Хорошо, и я предполагаю, что это какое-то совпадение во времени? Итак, 1:30->2:30 в зале заседаний 1 и 2:00->>2:30 следует читать «Столкновение», верно?
4. вы ожидали увидеть
=IF(C9<>C7,"No Clash",IF(D9<>D7, "No Clash", IF(E9<>E7, "No Clash", "Clash")))
в ячейке F9?5. Привет, может быть, просто попробуйте создать код, который проходит через каждую ячейку, начиная с 3-й строки до последней строки. Не буду кодировать его для вас, так как это очень просто, и вы можете сделать это самостоятельно . Идея в том, чтобы пройти через каждую ячейку в диапазоне от 3 до последней строки-> для каждой ячейки в диапазоне х=3 в последней ячейке<col.E> связь проверка если клетки(х,3)<>клетки(х-1,3), то «никакого столкновения» инструкции elseif клетки(х,4)<>клетки(х-1,4) Затем «Без столкновения», если ячейки(x,5)<>ячейки(x-1,5) Затем «Нет столкновения», Иначе «Столкновение» Закончится, если Следующий x.
Ответ №1:
Спасибо тем, кто прокомментировал, в итоге я нашел решение для этого.
Что я сделал, так это создал макрос, который будет организовывать все встречи в порядке возрастания (на основе их времени начала), где код VBA показан ниже для этого макроса:
Sub UpdateOrder()
Cells.Select
Selection.AutoFilter
ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Add2 Key:= _
Range("C1:C1506"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Selection.AutoFilter
Range("F10").Select
End Sub
Отсюда я применил следующую формулу к каждой строке, чтобы определить, было ли столкновение между последовательными строками:
=IF(AND(C16="",C17=""),"FALSE",IF(AND(C16=C17,E16=E17),"TRUE",IF(AND(C16=C15,E16=E15),"TRUE",IF(AND(D16>C17,D16<D17,E16=E17),"TRUE","FALSE"))))
Затем я добавил цветовой порог, чтобы время начала выделялось красным цветом, если оно совпадает с предыдущим временем начала, как показано на рисунке ниже.