亚历克斯定期分析最新的建筑行业数据,并需要撰写有关该数据的文章。他经常需要强调一些新数据,例如“工业建筑的建造量是自2007年8月以来的最低水平”。亚历克斯(Alex)想知道是否有一种方法可以自动进行这种突出显示。如果A列包含月份和年份,B列包含这些时间段的值,则Alex希望C列中的公式表示“此值是自2007年4月以来的最高值”或“此值是2004年11月以来的最低值”。

假设列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列中向下复制该公式,并应提供所需的信息。

|仅在B列中的值大于或小于B列中所有前述值的最小值时才在C列中进行标记。

如果您的工作表中有很多数据,您可能会注意到该公式会导致重新计算时间较长。如果是这种情况,那么您可能要考虑使用将进行所需分析并提供适当信息的宏。下面的宏通过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_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

链接:/ excelribbon-ExcelTipsMacros [点击此处在新的浏览器标签中打开该特殊页面]。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(3138)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本:

链接:/ excelribbon-Determining_Highest_Since_or_Lowest_Since [确定“最高自”或“最低自”]。