Now I'm spinning out......
Give the Function a Name & Dim the variables
Function NotMerged(testRange As Range) As Range
Dim rngMA As Range
Dim cell As Range
Dim rngExclude As Range
Set up the Primary Loop to test
For Each cell In testRange
Set rngMA = cell.MergeArea
If rngMA.Address <> cell.Address Then
If rngExclude Is Nothing Then
Set rngExclude = cell
Else
Set rngExclude = Union(rngExclude, cell)
End If
End If
Next cell
How does it know where to test, because at this point we actually haven't set set anything other than rngMA ( which I assume Bob means range Merged Area) = Cell.Address? Everything dimmed at this point is a range type variable. So this line
Set rngExclude = Union(rngExclude ,cell)
effectively means
. Set rngExclude= Union(cell, cell)
which joins the merged cells as a defined range, or am I reading this wrong?
The Secondary (Alternative) loop ...... 
If rngExclude Is Nothing Then
Set NotMerged = testRange
Else
Set rngMA = rngExclude.Cells(1, 1).MergeArea
rngMA.MergeCells = False
Set NotMerged = AntiUnion(testRange, rngExclude)
rngMA.MergeCells = True
End If
End Function
We call the following section (Function) from within the line Set Not Merged = AntiUnion( testRange, rngExclude).
Function AntiUnion(SetRange As Range, UsedRange As Range) As Range
Dim saveSet
saveSet = SetRange
SetRange.ClearContents
UsedRange = 0
Set AntiUnion = SetRange.SpecialCells(xlCellTypeBlanks)
SetRange = saveSet
End Function