Определение “наибольшее с” или “самое низкое с”

Алекс регулярно анализирует последние данные по строительной отрасли, и ему нужно писать статьи об этих данных. Часто ему нужно выделить какие-то новые данные, например, «строительство промышленных зданий было самым низким с августа 2007 года». Алекс задавался вопросом, есть ли способ автоматизировать этот тип выделения; если столбец A содержит месяц и год, а столбец B содержит значения для этих периодов, Алекс хотел бы получить формулу в столбце C, которая указывает «это значение является самым высоким с апреля 2007 года» или «это значение является самым низким с ноября 2004 года».

Предполагая, что месяц и год, указанные в столбце A, действительно являются значением даты в Excel (а не текстом), вы можете легко создать формулу для возврата желаемой информации. Если у вас есть строка 1, занятая заголовками столбцов, введите в ячейку C2 следующее:

= IF (ROW (B2) = 2, «», IF (B2> MAX ($ B $ 1 : B1), «это значение является самым высоким с» & ТЕКСТ (ИНДЕКС ($ A $ 1: A1, MATCH (MAX ($ B $ 1: B1), $ B $ 1: B1,0)), «мммм гггг»), ЕСЛИ (B2

Помните, что это одна формула, и ее следует вводить все в одной строке. Вы можете скопировать формулу вниз на столько строк, сколько необходимо в столбце C, и она должна предоставить желаемую информацию. Он делает запись в столбце C только в том случае, если значение в столбце B больше максимума или меньше минимума из всех вышеупомянутых значений в столбце B.

Если у вас довольно много данных на своем листе вы могли заметить, что формула требует длительного перерасчета. В этом случае вы можете рассмотреть возможность использования макроса, который проведет желаемый анализ и предоставит соответствующую информацию. Следующий макрос обеспечивает обратный просмотр информации в столбце B и предоставляет результат «наименьший с» и «наибольший с» в столбцах C и D.

Sub FindHiLow () Dim orig_cell As Range Dim orig_val As Integer Dim orig_row As Integer Dim rownum As Integer Dim newcell As Range Dim new_val As Integer Dim lowrow As Integer Dim hirow As Integer Set orig_cell = ActiveCell orig_row = ActiveCell.Row orig_val = orig_cell.Value ‘find low lowrow = 0 For rownum = orig_cell.Row — от 1 до 1 Шаг -1 Установить newcell = Cells (rownum, 2) new_val = newcell.Value Если orig_val> = new_val Затем lowrow = rownum Exit For End If Next If lowrow = 0 Then lowrow = 1 Cells (orig_row, 3) .Value = «Самый низкий с» & Cells (lowrow, 1) ‘найти самый высокий hirow = 0 Для rownum = orig_cell.Row — от 1 до 1 Шаг -1 Установите newcell = Cells (rownum, 2) new_val = newcell.Value If orig_val

Источник: frestage.ru

Бытовой вопрос