Kra, Dê uma olhada neste código. ele carrega na list box somente os registros filtrados em um componente, no seu caso optionButton. Porém, não é possível nomear os cabeçalhos.
Private Sub CommandButton1_Click()
'Pegando o Número de linhas da planilha
Dim linhas As Integer
linhas = Plan1.Cells(65536, 1).End(xlUp).Row
'reiniciando o listBox
listBox.Clear
' O termo txFiltro.text é o texto contido na propriedade Caption do option button que vc selecionou.
Dim exemplo As String
exemplo = txFiltro.Text
'Fazendo um for a partir da linha 2: primeira linha depois do cabeçalho.
Dim linhasListBox As Integer
linhasListBox = 0
For i = 2 To linhas
'Verificando se na primeira célula da linha é o texto do option button selecionado.
If UCase(Plan1.Cells(i, 1)) = UCase(exemplo) Then
'Adicionando os dados da linha na list box, no exemplo são 3 colunas.
With listBox
.AddItem
.List(linhasListBox, 0) = Plan1.Cells(i, 1)
.List(linhasListBox, 1) = Plan1.Cells(i, 2)
.List(linhasListBox, 2) = Plan1.Cells(i, 3)
End With
'Incrementando a contagem de linhas na ListBox
linhasListBox = linhasListBox + 1
End If
Next i
End Sub