KanwalNo1 - some hints
1st - for unioning same width 'tables' You can use my =UNION example (or analog) provided some post ago
=LAMBDA(array_a;array_b;
LET( size_a;ROWS(array_a); size_b;ROWS(array_b); size;size_a+size_b; cols;SEQUENCE(;MIN(COLUMNS(array_a);COLUMNS(array_b))); seq;SEQUENCE(size); IF(seq>size_a; INDEX(array_b;seq-size_a;cols); INDEX(array_a;seq;cols) ) ))
or
=LET(array_a;<there put your 1st range>;array_b;<here put Your 2nd range> ;
LET( size_a;ROWS(array_a); size_b;ROWS(array_b); size;size_a+size_b; cols;SEQUENCE(;MIN(COLUMNS(array_a);COLUMNS(array_b))); seq;SEQUENCE(size); IF(seq>size_a; INDEX(array_b;seq-size_a;cols); INDEX(array_a;seq;cols) ) ))
PS! Sorry semicolons in my examples - they need to replaced with commas. Regional settings problem
when You need to union 3 or more ranges, You can do this recursivly. Main idea there is to use conditional index for taking rows from ranges
when You have different columns ranges (I guess leftmost columns of ranges match) - you have to play more with if and indexes
What I didn't catch is what rearragement You plan to do after TRANSPOSE. Rearrange columns? rather than rearrange columns AFTER transpose, rearrange (sort) rows BEFORE transpose.