This untested code should generate a simple average based on the latest data up to a max of 90 last temps [every 2 minutes = 30/hr x 3 hrs = 90 observations].
Please test it on a 100 point sample to make sure it works.
<font face=Courier New><SPAN style="color:#00007F">Sub</SPAN> TakinMyTempWithoutAThermometer()
<SPAN style="color:#00007F">Dim</SPAN> LastRow <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Long</SPAN>, i <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Long</SPAN>
LastRow = [D65536].End(xlUp).Row
<SPAN style="color:#00007F">For</SPAN> i = 2 <SPAN style="color:#00007F">To</SPAN> LastRow
<SPAN style="color:#00007F">If</SPAN> i <= 91 <SPAN style="color:#00007F">Then</SPAN>
Cells(i, 5) = Application.WorksheetFunction.Sum(Range("D2:D" & i))
<SPAN style="color:#00007F">Else</SPAN>
Cells(i, 5) = Application.WorksheetFunction.Sum(Range("D" & i - 89 & ":D" & i))
<SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">If</SPAN>
Cells(i, 5) = Cells(i, 5) / Application.WorksheetFunction.Min(90, i - 1)
<SPAN style="color:#00007F">Next</SPAN> i
<SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Sub</SPAN>
</FONT>