Похоже, вы редактировали Ваш вопрос немного, поэтому входы slighty различны. Однако это идея того, что вам нужно. В принципе, определите диапазон. Пройдите через него, пока не найдете xyz. Установите флаг, чтобы начать скрывать каждую строку на итерации, пока не найдете пустую строку.
Sub HideRows()
Set r = Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
hiderow = False
For Each c In r.Cells
If Left(c.Value, 3) = "xyz" Then
hiderow = True
ElseIf Len(c.Value) = 0 Then
hiderow = False
End If
If hiderow Then
c.Select
Selection.EntireRow.Hidden = True
End If
Next c
End Sub
Не совсем поняли. Где пустые строки в вашем примере? – sam092
Вы пытались использовать макрорекордер, чтобы начать? – ARich