У Стюарта есть серия чтений на листе. В первом столбце у него есть даты, связанные с показаниями, а во втором столбце – фактические показания. Стюарт хотел бы иметь формулу, которая вернет первую дату, при которой показание станет отрицательным. Другими словами, формула должна искать первое отрицательное значение во втором столбце, а затем возвращать дату, связанную с этим значением. Во втором столбце может быть несколько отрицательных значений, но ему нужна только дата, связанная с первым отрицательным значением.
Есть несколько способов решения этой проблемы. Все методы предполагают, что даты в столбце A расположены в возрастающем порядке и что значения в столбце B не находятся в каком-либо различимом порядке. (Другими словами, показания могут колебаться выше и ниже 0 в любую заданную дату.)
При условии, что у вас есть некоторый контроль над макетом рабочего листа, вы можете добавить промежуточный рабочий столбец в столбец C, используется для обозначения отрицательного значения. Просто поместите такую формулу в столбец C справа от каждого значения:
= IF (B1
Эта формула возвращает дата в столбце A, если значение в B меньше 0 (отрицательное), в противном случае ничего не возвращает. Все, что вам нужно сделать, это найти минимальное значение в столбце C:
= MIN (C: C)
Отформатируйте результат как дату, и он представляет дату, когда показания впервые стали отрицательными.
Другой подход — отказаться от использования промежуточного столбца и использовать формулу массива для определения даты. Предполагая, что данные находятся в диапазоне A1: B42, вы можете использовать любую из следующих формул:
= MIN (IF (B1: B42 Помните, что это все формулы массива, поэтому вам нужно ввести любую из них, которую вы выберете, нажав Shift + Ctrl + Enter . Отформатируйте результат как дату, и это будет ответ, который вы ищете.
Если хотите, вы также можете использовать простой макрос для определения даты:
Функция GetFirstNegative (rngdata) Dim c как вариант для каждого c в rngdata Если c
На рабочем листе вы можете использовать эту пользовательскую функцию следующим образом:
= GetFirstNegative (B1: B42)
Источник: