Yep, this is possible! The following VBA macro finds the last row and last column of your table and summarizes the non-empty results on a new sheet named "Orders_Clean." Run this macro from the sheet containing the raw data and it will create the new table for you:
Dim iLastRow As Long, iLastCol As Long
Dim i As Long, j As Long
Dim icount As Long
Dim wsInput As Worksheet, wsOutput As Worksheet
Application.ScreenUpdating = False
'Find the dimensions of the raw table
Set wsInput = ActiveSheet
iLastRow = wsInput.Range("A" & Rows.Count).End(xlUp).Row
iLastCol = wsInput.Cells(1, Columns.Count).End(xlToLeft).Column
'Create a new sheet named "Orders_Clean" and delete old sheet if it exists'
Application.DisplayAlerts = False
On Error Resume Next
Set wsOutput = Worksheets.Add
wsOutput.Name = "Orders_Clean"
On Error GoTo 0
Application.DisplayAlerts = True
For j = 2 To iLastCol 'loop through each column'
icount = 1
wsOutput.Cells(1, j - 1).Value = wsInput.Cells(1, j).Value
For i = 2 To iLastRow 'loop through each row'
If Application.Clean(Trim(wsInput.Cells(i, j))) <> "" Then 'if not empty'
icount = icount + 1
wsOutput.Cells(icount, j - 1) = wsInput.Cells(i, 1)
Application.ScreenUpdating = True
Instead of using Filters, this macro steps through each cell in your table looking for non-empty cells. If the cell only contains spaces or other whitespace, it will be treated as empty. That's what the Application.Clean and Trim functions are doing in the If statement.
It'd be interesting to see a speed comparision between a macro like this and one that filters and copies the results. I suspect this will be plenty fast for you, though! :-)