Поместите этот код в личную таблицу кодов рабочего листа, доступную через правую кнопку мыши на вкладке имени рабочего листа, Просмотреть код.Измените диапазоны строк, чтобы они соответствовали.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D3, D4")) Is Nothing Then
On Error GoTo meh
Application.ScreenUpdating = False
Range("8:" & Me.UsedRange.Rows.Count).EntireRow.Hidden = True
Select Case Range("D3").Value2
Case "Class I"
Select Case Range("D4").Value2
Case ChrW(196) 'Ä
Intersect(Range("8:20"), Me.UsedRange).EntireRow.Hidden = False
Case "B"
Intersect(Range("21:33"), Me.UsedRange).EntireRow.Hidden = False
Case Else
'do nothing
End Select
Case "Class II"
'copy above for Class I here
'modify rows to show/hide
Case Else
'do nothing
End Select
End If
meh:
Application.ScreenUpdating = True
End Sub