I already have the solution, but it seems way too cumbersome for something so simple and as a result lags the entire worksheet quite heavily.

Here is the (array) formula:
=IFERROR(INDEX(INDIRECT(CONCATENATE("'COURSES-",'Budget Overview'!$H$1,"'!","$B$2:$B$400")), SMALL(IF(SMALL(IF(COUNTIF($A$63:A63, INDIRECT(CONCATENATE("'COURSES-",'Budget Overview'!$H$1,"'!","$B$2:$B$400")))+ISBLANK(INDIRECT(CONCATENATE("'COURSES-",'Budget Overview'!$H$1,"'!","$B$2:$B$400")))=0, COUNTIF(INDIRECT(CONCATENATE("'COURSES-",'Budget Overview'!$H$1,"'!","$B$2:$B$400")), "<"&INDIRECT(CONCATENATE("'COURSES-",'Budget Overview'!$H$1,"'!","$B$2:$B$400")))+1, ""), 1)=IF(ISBLANK(INDIRECT(CONCATENATE("'COURSES-",'Budget Overview'!$H$1,"'!","$B$2:$B$400"))), "", COUNTIF(INDIRECT(CONCATENATE("'COURSES-",'Budget Overview'!$H$1,"'!","$B$2:$B$400")), "<"&INDIRECT(CONCATENATE("'COURSES-",'Budget Overview'!$H$1,"'!","$B$2:$B$400")))+1), ROW(INDIRECT(CONCATENATE("'COURSES-",'Budget Overview'!$H$1,"'!","$B$2:$B$400")))-MIN(ROW(INDIRECT(CONCATENATE("'COURSES-",'Budget Overview'!$H$1,"'!","$B$2:$B$400"))))+1), 1), MATCH(MIN(IF(COUNTIF($B$7:B7, INDIRECT(CONCATENATE("'COURSES-",'Budget Overview'!$H$1,"'!","$B$2:$B$400")))+ISBLANK(INDIRECT(CONCATENATE("'COURSES-",'Budget Overview'!$H$1,"'!","$B$2:$B$400")))>0, "", COUNTIF(INDIRECT(CONCATENATE("'COURSES-",'Budget Overview'!$H$1,"'!","$B$2:$B$400")), "<"&INDIRECT(CONCATENATE("'COURSES-",'Budget Overview'!$H$1,"'!","$B$2:$B$400")))+1)), INDEX(IF(ISBLANK(INDIRECT(CONCATENATE("'COURSES-",'Budget Overview'!$H$1,"'!","$B$2:$B$400"))), "", COUNTIF(INDIRECT(CONCATENATE("'COURSES-",'Budget Overview'!$H$1,"'!","$B$2:$B$400")), "<"&INDIRECT(CONCATENATE("'COURSES-",'Budget Overview'!$H$1,"'!","$B$2:$B$400")))+1), SMALL(IF(SMALL(IF(COUNTIF($B$7:B7, INDIRECT(CONCATENATE("'COURSES-",'Budget Overview'!$H$1,"'!","$B$2:$B$400")))+ISBLANK(INDIRECT(CONCATENATE("'COURSES-",'Budget Overview'!$H$1,"'!","$B$2:$B$400")))=0, COUNTIF(INDIRECT(CONCATENATE("'COURSES-",'Budget Overview'!$H$1,"'!","$B$2:$B$400")), "<"&INDIRECT(CONCATENATE("'COURSES-",'Budget Overview'!$H$1,"'!","$B$2:$B$400")))+1, ""), 1)=IF(ISBLANK(INDIRECT(CONCATENATE("'COURSES-",'Budget Overview'!$H$1,"'!","$B$2:$B$400"))), "", COUNTIF(INDIRECT(CONCATENATE("'COURSES-",'Budget Overview'!$H$1,"'!","$B$2:$B$400")), "<"&INDIRECT(CONCATENATE("'COURSES-",'Budget Overview'!$H$1,"'!","$B$2:$B$400")))+1), ROW(INDIRECT(CONCATENATE("'COURSES-",'Budget Overview'!$H$1,"'!","$B$2:$B$400")))-MIN(ROW(INDIRECT(CONCATENATE("'COURSES-",'Budget Overview'!$H$1,"'!","$B$2:$B$400"))))+1), 1), , 1), 0), 1),"")
The cell H1 contains a list of years. There are a bunch of worksheets labeled COURSES-XXXX (the year).

The column B:B in said list contains the information I want.

Is there a better way of achieving this?