Returning to your original request: "I want to be able to keep several different category-combined and/or differently-sorted tables without having to constantly resort or roll-up categories in the same table," here's an example that displays three separate 'categories' (here named 'classes') of transaction taken from a main Data table and placed onto separate tables.

The technique uses an Index table, here named "Test," to mark the location of each occurrence of a category. The index table may be separate, as shown here, of may be included in the Data table as a set of (optionally hidden) columns.
The advantage to including the index on the data table is that it is automatically extended as rows are added to the Data table. The disadvantage is that as part of the Data table, it is vulnerable to accidental revision.
There are two active formulas.
One is entered in A2 of Test, and filled right and down from there to fill that table:
=IF(Data::$A=A$1,ROW(),65537)
Results as shown in Test, column A.
The other is entered into cell A2 of Class A (and with a minor modification into the same cell the other Class tables), and filled right and down to fill that table.
=IFERROR(OFFSET(Data :: $A$1,SMALL(Test::$A,(ROW())-1)-1,COLUMN()+0),"")
SMALL picks off the marked occurrences in order, and sets each number -1 as the row offset for OFFSET. The column offset is set by COLUMN(), which returns the number of the column containing the formula.
When SMALL chooses 65537, one more than the largest number of rows in a Numbers table, as the 'next smallest' number, OFFSET generates an error, caught by IFERROR, which returns a null string (as has happened in row 5 of Class A), which appears as a 'blank' cell.
The Class x tables require at least as many rows as there are items in Data that fit that Class.
Regards,
Barry