Try this:
Sub foo()
Dim c As Range, r As Range
On Error GoTo Terminate
Application.ScreenUpdating = False
With ActiveSheet
.Range("G1").EntireColumn.Insert
Set r = Intersect(.UsedRange, .Range("H:H"))
Set r = r.Offset(1, 0).Resize(r.Rows.Count - 1, 1).SpecialCells(xlCellTypeConstants)
For Each c In r
c.Offset(0, 1).Value = c.CurrentRegion.Rows.Count
Next c
.Range("G1").EntireColumn.Delete
End With
Terminate:
If Err.Number Then
Debug.Print Err.Number, Err.Description
Err.Clear
End If
Application.ScreenUpdating = True
End Sub
Bookmarks