I came across this issue lately, and built the following. Of course to have it work, the prerequisite must be met that in principle the two tables do fit on one sheet. What I than do, is build in sufficient space (=rows) between the two tables, and after refresh hide the rows that are left between the tables. So it does require VBA, and can for example be executed on the PivotTable_Update event.
Private Sub hideRowsBetweenListObjects(sheetName As String)
Dim tblRowPosition1 As Integer
Dim tblNrOfRows1 As Integer
Dim tblRowPosition2 As Integer
Dim tblNrOfRows2 As Integer
'Initialize
Application.ScreenUpdating = False
With Worksheets(sheetName).ListObjects(1)
tblRowPosition1 = .Range.Row
tblNrOfRows1 = .Range.Rows.Count
End With
With Worksheets(sheetName).ListObjects(2)
tblRowPosition2 = .Range.Row
tblNrOfRows2 = .Range.Rows.Count
End With
With Worksheets(sheetName)
If tblRowPosition1 < tblRowPosition2 Then
.Range(.Cells(tblRowPosition1 + tblNrOfRows1, 1), .Cells(tblRowPosition2 - 4, 1)).EntireRow.Hidden = True
ElseIf tblRowPosition2 < tblRowPosition1 Then
.Range(.Cells(tblRowPosition2 + tblNrOfRows2, 1), .Cells(tblRowPosition1 - 4, 1)).EntireRow.Hidden = True
End If
End With
End Sub