I'm not sure why you are using both L59 & L58? I thought you wanted the formula to calculate the same cell the formula is in, but on the 3 previous sheets. If that is the case, you could try this (vba) user-defined function. To implement ..
1. Right click the sheet name tab and choose "View Code".
2. In the Visual Basic window use the menu to Insert|Module
3. Copy and Paste the code below into the main right hand pane that opens at step 2.
4. Close the Visual Basic window.
5. Enter the formula as shown in the screen shot below*.
6. Your workbook will need to be saved as a macro-enabled workbook (*.xlsm)
* The default is to use the previous 3 sheets but if you wanted to average a different number of sheets, use the optional argument like in cell L59 below
Note that function does not work back from the last worksheet in the workbook, but from the sheet the formula is in, which may or may not be the same thing.
Also the function will only update when any cell on that worksheet re-calculates.
Code:
Function AvPrev(Optional N As Long = 3) As Variant
Dim Vals As Variant
Dim i As Long, CurrIdx As Long
Dim sAdr As String
Application.Volatile
CurrIdx = Application.Caller.Parent.Index
sAdr = Application.Caller.Address
ReDim Vals(1 To N) As Variant
For i = 1 To N
Vals(i) = Sheets(CurrIdx - i).Range(sAdr).Value
Next i
AvPrev = Application.Average(Vals)
End Function