I'm not sure if there's a better solution, but I can help you with your existing code.

Rather than using the active cell for everything, you would be better off defining ranges. It makes it much easier to keep track of where you are and means you can 'store' more than one cell at a time. For example:
Sub CSVCONSOL24()

'Grabs Part TWC Cell

Dim a As Integer, b As Integer, Cl As Range

    Rows("1:1").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select

Let a = Selection.Rows.Count

Cells(1, 2).Select

For b = 1 To a
Sheets("0309").Activate
Set Cl = Cells(b, 2)
 If Cl.Value = "TWC  #" Then
 Cl.Offset(1, 0).Select
        
        If ActiveCell.Value = "" Then
        ActiveCell.FormulaR1C1 = "-"
        End If
        
    Sheets("Table").Activate
    Range("Z1").Select
    Selection.End(xlDown).Select

'***************
If ActiveCell.Value <> Cl.Value Then 
     ActiveCell.Offset(1, 0).Value = Cl.Value
End If
'****************
    
End If
    
Next b

End Sub
I have left in most of your ActiveCell references as I'm unsure exactly what some of your tests are for, but as you can see I have defined a range to hold the cell with the value you are comparing.