Surely you don't want 3 years of data in 30 min intervals....there is 105000 lines of data ??
A couple of things to consider
1. Can all the zero profile reads be removed / filtered out ?
2. Controlled usage seems to be 00:00 to 4am
3. General is anytime
4. Solar is 7:30 to 3pm....approx
Can you report on these seperately ??
and finally...why bother with 30 min increments.....seems like spending $10 to save 5 cents...but I'm sure you have good reasons...
Sub MM1()
Dim lr As Long, r As Long
Application.ScreenUpdating = False
lr = Cells(Rows.Count, "I").End(xlUp).Row
For r = lr To 2 Step -1
If Cells(r, "I").Value = 0 Then Rows(r).Delete
Next r
Application.ScreenUpdating = True
End Sub