Code:
Option Explicit

Sub Consolidator()

    Dim varSource As Variant
    Dim varChanges As Variant
    Dim varOutput As Variant
    Dim sngYearQuarter As Single
    Dim wks As Worksheet
    Dim lngChanges As Long
    Dim lngSource As Long
    Dim lngOutput As Long
    Dim lstTable As ListObject
    Dim strPivotDataRange As String
    
    Application.ScreenUpdating = 0
    Set wks = Worksheets("Sheet1")
    With wks
        On Error Resume Next
        Set lstTable = .ListObjects("PortfolioTable2")
        Err.Clear: On Error GoTo 0: On Error GoTo -1
        If Not lstTable Is Nothing Then
            .Range("PortfolioTable2").EntireColumn.Delete
        End If
        .Range("PortfolioTable").Rows(1).Offset(-1).Resize(3).Copy .Range("P3")
        .ListObjects.Add(xlSrcRange, .Range("$P$3:$X$5"), , xlYes).Name = "PortfolioTable2"
        sngYearQuarter = .Range("B2").Value & "." & .Range("B1").Value
        varSource = .Range("PortfolioTable").Value2
        varChanges = .Range("MergersTable").Value2
        For lngChanges = LBound(varChanges) To UBound(varChanges)
            'Assuming that even if the Year and Quarter is greater than that in the mergers table, it still needs to be considered
            'If that's not the case, in the expression below, remove >= to =
            If sngYearQuarter >= CSng(varChanges(lngChanges, 2) & Application.DecimalSeparator & varChanges(lngChanges, 1)) Then
                For lngSource = LBound(varSource) To UBound(varSource)
                    If varSource(lngSource, 2) = varChanges(lngChanges, 3) Then
                        varSource(lngSource, 2) = varChanges(lngChanges, 4)
                    End If
                Next lngSource
            End If
        Next lngChanges
        .Range("P4").Resize(lngSource - 1, 9).Value = varSource
        .Range("AA:AI").Delete
        strPivotDataRange = CreatePiv
        .Range("PortfolioTable2").Offset(1).ClearContents
        .ListObjects("PortfolioTable2").Resize (.Range("PortfolioTable2").Rows(1).Offset(-1).Resize(2))
        .Range("P4").Resize(.Range(strPivotDataRange).Rows.Count, .Range(strPivotDataRange).Columns.Count).Value = .Range(strPivotDataRange).Value
        .Range(strPivotDataRange).EntireColumn.Delete
        .Range("PortfolioTable2").Rows(1).Resize(2).Copy
        .Range("PortfolioTable2").PasteSpecial Paste:=xlPasteFormats
        varOutput = .Range("PortfolioTable2").Value2
        Application.CutCopyMode = False
        For lngOutput = LBound(varOutput) To UBound(varOutput)
            If IsEmpty(varOutput(lngOutput, 1)) Then
                varOutput(lngOutput, 1) = varOutput(lngOutput - 1, 1)
            End If
        Next lngOutput
        .Range("PortfolioTable2").Value2 = varOutput
        .Range("PortfolioTable").ClearContents
        .ListObjects("PortfolioTable").Resize (.Range("PortfolioTable").Rows(1).Offset(-1).Resize(.Range("PortfolioTable").Rows.Count))
        .Range("PortfolioTable").Value = varOutput
        .Range("PortfolioTable2").EntireColumn.Delete
        .UsedRange.EntireColumn.AutoFit
    End With
    Application.ScreenUpdating = 1
    
End Sub

Private Function CreatePiv() As String
    
    Dim pvc As PivotCache
    Dim pvt As PivotTable
    
    With ThisWorkbook
        Set pvc = .PivotCaches.Create(SourceType:=xlDatabase, SourceData:="PortfolioTable2", Version:=xlPivotTableVersion12)
        Set pvt = pvc.CreatePivotTable(TableDestination:="Sheet1!R2C27", TableName:="PvtCustom", DefaultVersion:=xlPivotTableVersion12)
    End With
    With pvt.PivotFields("Account")
        .Orientation = xlRowField
        .Position = 1
        .Subtotals(1) = False
    End With
    With pvt.PivotFields("Position")
        .Orientation = xlRowField
        .Position = 2
        .Subtotals(1) = False
    End With
    With pvt
        .AddDataField .PivotFields("Col3"), "Col_3", xlSum
        .AddDataField .PivotFields("Col4"), "Col_4", xlSum
        .AddDataField .PivotFields("Col5"), "Col_5", xlSum
        .AddDataField .PivotFields("Col6"), "Col_6", xlSum
        .AddDataField .PivotFields("Col7"), "Col_7", xlSum
        .AddDataField .PivotFields("Col8"), "Col_8", xlSum
        .AddDataField .PivotFields("Col9"), "Col_9", xlSum
        .InGridDropZones = True
        .RowAxisLayout xlTabularRow
        .ColumnGrand = False
        .RowGrand = False
        .ShowTableStyleColumnHeaders = False
        .ShowTableStyleRowHeaders = False
        CreatePiv = .TableRange1.Offset(.ColumnRange.Rows.Count).Resize(.TableRange1.Rows.Count - .ColumnRange.Rows.Count).Address
        'Same Thing
        'CreatePiv = .DataBodyRange.Offset(, -(.RowRange.Columns.Count)).Resize(, .DataBodyRange.Columns.Count + .RowRange.Columns.Count).Address
    End With
    
End Function