I guess I have a solution that requires one Helper Column.
See the below screenshot.
Please note that Cols H & I are not required. They are just kept to give you an idea that you need to generate the correct Row,Col reference for INDEX to fetch the data from the grid of 6x4.
There's one Helper Column K.
The formula in K2 is
=IF(ISBLANK(INDEX($B$2:$E$7,MOD(ROW(A1)-1,6)+1,INT((ROW(1:1)-1)/6)+1)),"",INDEX($B$2:$E$7,MOD(ROW(A1)-1,6)+1,INT((ROW(1:1)-1)/6)+1))
Drag it down. This generates the INDEX function on B2:E7 with correct Row,Col reference and flattens the data into single column.
Now the next step is to generate a list removing Blanks.
The formula in M2 is
=IFERROR(INDEX($K$2:$K$25, SMALL(IF(NOT(($K$2:$K$25)=""), ROW($K$2:$K$25)-ROW($A$1),""), ROW(A1))),"")
Drag it down up to the intended rows.
On my Excel 2021 it does not require to create an Array Formula, but in Excel 2016 both formulas in above example may be required as an Array Formulas for it to work correctly.
You need to press CTRL + SHIFT + ENTERfrom within the formula bar to create an array formula.
I have not extensively tested it. Give it a try.
Note -ROW($A$1)
in the formula as we are starting in Row 2.
for cell in Selection ...