
上記のサンプルデータを用いて解説していきます。
空白行を全て選択
まずは、B列のカテゴリが空白の場合、空白行を全て選択する方法を解説します。
空白を判定するには、IF文で『If セル値 = "" Then』とし、セル値が空白(ダブルクォーテーション2つ)だった場合の行を選択します。
サンプルコード
Sub 空白行選択()
Dim i As Long, LastRow As Long
Dim rng As Range
'A列で最終行を取得する
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
'2行目から最終行までループ
For i = 2 To LastRow
'B列のカテゴリが空白の場合、空白行をrngに格納する("" = 空白を表しています)
If Cells(i, "C").Value = "" Then
If rng Is Nothing Then
Set rng = Rows(i)
Else
Set rng = Union(rng, Rows(i))
End If
End If
Next i
'rngに行が格納されていた場合にのみ空白行を選択
If Not rng Is Nothing Then
rng.Select
End If
'リソースの開放
Set rng = Nothing
MsgBox "空白行選択完了", vbInformation, "処理終了"
End Sub
実行結果
空白行を選択することができました。
サンプルコードではRangeオブジェクトの変数(rng)に行を格納していき、最後にrngに格納した行を選択しています。
Rangeオブジェクトに格納する方法は、こちらの記事の行削除の項目で解説しています。

空白行を全て削除
空白行を全て削除するには上記で行った処理で、『rng.Select』の箇所を『rng.Delete』に変更します。
削除前はユーザーに削除してよいかを確認するメッセージボックスを表示させることをお勧めいたします。
サンプルコード
Sub 空白行削除()
'削除前にユーザーに削除処理を行ってよいか確認する
If MsgBox("空白行の削除を行います" & vbCrLf & "よろしいですか?", vbYesNo + vbQuestion, "空白行削除") = vbNo Then
'ユーザーが『いいえ』を選択した場合処理を終了
Exit Sub
End If
Dim i As Long, LastRow As Long
Dim rng As Range
'A列で最終行を取得する
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
'2行目から最終行までループ
For i = 2 To LastRow
'B列のカテゴリが空白の場合、空白行をrngに格納する("" = 空白を表しています)
If Cells(i, "C").Value = "" Then
If rng Is Nothing Then
Set rng = Rows(i)
Else
Set rng = Union(rng, Rows(i))
End If
End If
Next i
'rngに行が格納されていた場合にのみ空白行を削除
If Not rng Is Nothing Then
rng.Delete
End If
'リソースの開放
Set rng = Nothing
MsgBox "空白行削除完了", vbInformation, "処理終了"
End Sub
実行結果
空白行を全て削除することが出来ました。

空白行を判定する際の注意点
空白行を判定する場合、見た目上セルが空白であっても下記の画像のように、セルにスペースが入っているなどして空白とみなされない場合があります。
そういった場合は、下記のサンプルコードのように、『If セル値 = " " Or セル値 = " " Then』とすると、半角スペースと全角スペースの判断が出来るようになります。
しかし、この方法は最初の1文字のみにスペースが入っている場合にのみしか適応されません。状況に応じて入力規則の制限をしたり、更に条件を絞り込んでいく必要があります。

サンプルコード
Sub 空白行削除()
'削除前にユーザーに削除処理を行ってよいか確認する
If MsgBox("空白行の削除を行います" & vbCrLf & "よろしいですか?", vbYesNo + vbQuestion, "空白行削除") = vbNo Then
'ユーザーが『いいえ』を選択した場合処理を終了
Exit Sub
End If
Dim i As Long, LastRow As Long
Dim rng As Range
'A列で最終行を取得する
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
'2行目から最終行までループ
For i = 2 To LastRow
'B列のカテゴリが空白の場合、空白行をrngに格納する("" = 空白を表しています)
'スペース入っている行も削除しています
If Cells(i, "C").Value = "" Or Cells(i, "C").Value = " " Or Cells(i, "C").Value = " " Then
If rng Is Nothing Then
Set rng = Rows(i)
Else
Set rng = Union(rng, Rows(i))
End If
End If
Next i
'rngに行が格納されていた場合にのみ空白行を削除
If Not rng Is Nothing Then
rng.Delete
End If
'リソースの開放
Set rng = Nothing
MsgBox "空白行削除完了", vbInformation, "処理終了"
End Sub