الکس به طور معمول آخرین داده های صنعت ساختمان را تجزیه و تحلیل می کند و نیاز به نوشتن مقاله در مورد داده ها دارد. او اغلب نیاز به برجسته کردن برخی از داده های جدید دارد، مانند "ساخت و ساز ساختمان های صنعتی کمترین میزان از اوت 2019 بوده است." الکس تعجب کرد که آیا راهی برای خودکارسازی این نوع برجسته سازی وجود دارد یا خیر. اگر ستون A شامل ماه و سال و ستون B حاوی مقادیر مربوط به آن دوره ها باشد، الکس فرمولی را در ستون C می خواهد که نشان دهد "این مقدار بالاترین مقدار از آوریل 2019 است" یا "این مقدار کمترین مقدار از نوامبر 2016 است."
با فرض اینکه ماه و سال ذکر شده در ستون A واقعاً یک مقدار تاریخ اکسل (و نه متن) باشد، می توانید به راحتی فرمولی برای برگرداندن اطلاعات مورد نظر ایجاد کنید. اگر ردیف 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به یاد داشته باشید که این یک فرمول واحد است و باید همه را در یک خط وارد کنید. می توانید فرمول را به تعداد ردیف های لازم در ستون 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