Code in the attached, run by button click on Sheet1:
Sub Test()
Dim lr As Long, i As Long, sht As Worksheet, wbk As Workbook
Dim TopDataCellRow As Long, nextbr As Long, SituationCount As Long, cll As Range
Set wbk = ThisWorkbook
Set sht = wbk.Worksheets("Sheet1")
TopDataCellRow = 3
With sht
lr = .Range("b65000").End(xlUp).Row
nextbr = lr + 1
For i = lr To TopDataCellRow Step -1
If .Cells(i, 3).Value = "XYZ" Then
If .Cells(i - 1, 3).Value = "ABC" Then
.Cells(i + 1, 3).EntireRow.Insert
lr = lr + 1
With .Range(.Cells(nextbr, "C"), .Cells(i + 2, "B"))
.BorderAround , 4
.Offset(, -1).Resize(, 1).BorderAround , 4
.Offset(, -1).Resize(, 1).MergeCells = True
.Offset(, -1).Cells(1).Value = "¬`"
nextbr = i + 2
End With
End If
End If
If i = TopDataCellRow Then
With .Range(.Cells(nextbr - 1, 3), .Cells(TopDataCellRow, 2))
.BorderAround , 4
.Offset(, -1).Resize(, 1).BorderAround , 4
.Offset(, -1).Resize(, 1).MergeCells = True
.Offset(, -1).Cells(1).Value = "¬`"
End With
.Cells(TopDataCellRow - 1, "B").Resize(, 2).ClearContents
End If
Next i
SituationCount = 0
For Each cll In .Range("A" & TopDataCellRow & ":A" & lr).Cells
If cll.Value = "¬`" Then
SituationCount = SituationCount + 1
cll.Value = "Situation " & SituationCount
End If
Next cll
End With
End Sub