Определение «Наивысшего с момента» или «Наименьшего с момента» (Microsoft Excel)
Алекс регулярно анализирует последние данные по строительной отрасли, и ему нужно писать статьи о данных. Часто ему нужно выделить какие-то новые данные, например, «строительство промышленных зданий было самым низким с августа 2019 года». Алекс задавался вопросом, есть ли способ автоматизировать этот тип выделения; если столбец A содержит месяц и год, а столбец B содержит значения для этих периодов, Алекс хотел бы получить формулу в столбце C, которая указывает «это значение является самым высоким с апреля 2019 года» или «это значение является самым низким с ноября 2016 года».
Предполагая, что месяц и год, перечисленные в столбце A, действительно являются значением даты в Excel (а не текстом), вы можете легко создать формулу для возврата желаемой информации. Если у вас есть строка 1, занятая заголовками столбцов, введите в ячейку C2 следующее:
=IF(ROW(B2)=2,"",IF(B2>MAX($B$1:B1), "this value is the highest since " & TEXT(INDEX($A$1:A1,MATCH(MAX( $B$1:B1),$B$1:B1,0)), "mmmm yyyy"), IF(B2<MIN($B$1:B1), "this value is the lowest since " & TEXT(INDEX($A$1:A1, MATCH(MIN($B$1:B1),$B$1:B1,0)), "mmmm yyyy"),"")))
Помните, что это одна формула, и ее следует вводить в одной строке. Вы можете скопировать формулу вниз на необходимое количество строк в столбце 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 lowest lowrow = 0 For rownum = orig_cell.Row - 1 To 1 Step -1 Set newcell = Cells(rownum, 2) new_val = newcell.Value If orig_val >= new_val Then lowrow = rownum Exit For End If Next If lowrow = 0 Then lowrow = 1 Cells(orig_row, 3).Value = "Lowest since " & Cells(lowrow, 1) ' find highest hirow = 0 For rownum = orig_cell.Row - 1 To 1 Step -1 Set newcell = Cells(rownum, 2) new_val = newcell.Value If orig_val <= new_val Then hirow = rownum Exit For End If Next If hirow = 0 Then hirow = 1 Cells(orig_row, 4).Value = "Highest since " & Cells(hirow, 1) End Sub
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (10183) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:
link: / excel-Determining_Highest_Since_or_Lowest_Since [Определение« Наивысшего с момента »или« Наименьшего с момента »]
.