A sample workbook would help, but I faked 3 months of data in the attachment
Something like thing might give you some ideas
There are faster ways (SUMPRODUCT for example) but this is simpler, and has almost NO error checking
Mostly I wasn't sure how consistent you data is
Option Explicit
Private Sub cbGo_Click()
Dim rData As Range
Dim iRow As Long
Dim iTotalCount As Long
Dim dblTotalAmount As Double
Dim iMonthNumber As Long
iTotalCount = 0
dblTotalAmount = 0#
iMonthNumber = Me.lbMonths.ListIndex + 1
Set rData = Worksheets("Sheet1").Cells(1, 1).CurrentRegion
For iRow = 2 To rData.Rows.Count
With rData.Rows(iRow)
If Me.obSmall.Value And LCase(.Cells(1).Value) = "small" Then
If Month(.Cells(2).Value) = iMonthNumber Then
iTotalCount = iTotalCount + 1
dblTotalAmount = dblTotalAmount + .Cells(4).Value
End If
ElseIf Me.obMedium.Value And LCase(.Cells(1).Value) = "medium" Then
If Month(.Cells(2).Value) = iMonthNumber Then
iTotalCount = iTotalCount + 1
dblTotalAmount = dblTotalAmount + .Cells(4).Value
End If
ElseIf Me.obLarge.Value And LCase(.Cells(1).Value) = "large" Then
If Month(.Cells(2).Value) = iMonthNumber Then
iTotalCount = iTotalCount + 1
dblTotalAmount = dblTotalAmount + .Cells(4).Value
End If
End If
End With
Next iRow
MsgBox "Total Count = " & iTotalCount
MsgBox "Total Amount = " & dblTotalAmount
If dblTotalAmount > 0# Then
MsgBox "Average = " & (dblTotalAmount) / iTotalCount
End If
End Sub
Private Sub UserForm_Initialize()
Me.obSmall.Value = True
Me.lbMonths.AddItem "Jan"
Me.lbMonths.AddItem "Feb"
Me.lbMonths.AddItem "Mar"
Me.lbMonths.AddItem "Apr"
Me.lbMonths.AddItem "May"
Me.lbMonths.AddItem "Jun"
Me.lbMonths.AddItem "Jul"
Me.lbMonths.AddItem "Aug"
Me.lbMonths.AddItem "Sep"
Me.lbMonths.AddItem "Oct"
Me.lbMonths.AddItem "Nov"
Me.lbMonths.AddItem "Dec"
End Sub