It all depends on how you want to use the values. I thought the group names are fixed, and each one of them is used for a unique, specific purpose.
But anyway, if you want to have the group names at hand, I would collect them in an array:
Sub CollectOptionButtonValues()
Dim OpGroups As Collection
Dim Sh As Shape, Ws As Worksheet, o As Object
Dim GroupName As String, GroupValue As String
Dim GroupNames As String, arrGN
Dim i As Long
Set Ws = ActiveSheet
Set OpGroups = New Collection
For Each Sh In Ws.Shapes
Set o = Nothing
On Error Resume Next
Set o = Sh.OLEFormat.Object.Object
On Error GoTo 0
If Not o Is Nothing Then
If LCase(TypeName(o)) = "optionbutton" Then
If o.Value = True Then
GroupName = o.GroupName
Select Case Sh.TopLeftCell.Column
Case 4
GroupValue = "Satisfactory"
Case 5
GroupValue = "Requires Action"
Case 6
GroupValue = "Not Applicable"
End Select
OpGroups.Add GroupValue, GroupName
GroupNames = GroupNames & "," & GroupName
End If
End If
End If
Next
GroupNames = Mid(GroupNames, 2)
arrGN = Split(GroupNames, ",")
For i = LBound(arrGN) To UBound(arrGN)
Debug.Print arrGN(i) & " - " & OpGroups(arrGN(i))
Next
End Sub