You pushed my creativity, but it can be done. There are some things to be careful with. It's a long answer, but it was an interesting problem.
The best result is ... =OFFSET(INDIRECT(\LUSheet&ADDRESS(MATCH(OFFSET(B2,0,-1,1,1),\Codes,0)+ROW(\Codes)-1,COLUMN(\Codes))),0,1,1,3)
Read on to see how to get their. It's actually not hard, I just broke it down.
The basic formula is this ...
=OFFSET( INDIRECT( "'LU'!" & ADDRESS( MATCH( OFFSET(B2,0,-1,1,1) ,LU!$A:$A,0) ,COLUMN(LU!$A:$A) ) ) ,0,1,1,3 )
OFFSET(B2,0,-1,1,1) ... the address (B2) is the addresss of the cell you want the dropdown in. The -1 is how many cells to the left the Code you will search for is in. It's better to do it this way than use direct address references. This way, no mattr where you place the validation formula, it will look 1 cell to the left for the Code. You can change that -1 number to whatever you like.
MATCH( XXX ,LU!$A:$A,0) ... You need the absolute row number of the matched code, so use the whole column. LU!$A:$A is the column you will be searching, you need to include the sheet name if it is on a different sheet. This will return what row the Code is in.
"'LU'!" & ADDRESS( XXX ,COLUMN(LU!$A:$A) ) ... gets the address of where the matched code is. If the reference will never change, you could change COLUMN(LU!$A:$A) to 1. The "'LU'!" part at the start is the sheet where you look up the code. If you change the sheet name, you will have to update this in the formula. There is a way to do this automatically.
INDIRECT( XXX ) ... changes the address string to a cell reference.
OFFSET( XXX ,0,1,1,3 ) ... returns a range that is offset form the INDIRECT cell 0 rows, 1 column that is 1 row high and 3 rows wide.
Select the cell where you want the dropdown to be. Select DataValidation and List and paste that formula into the source. Edit B2 for the current cell address and the LU! sheetname. If the sheetname has a space in it, you must surround the name with apostrophe marks like: 'Look Up'!
Other stuff ...
It's cleaner to use a named range rather than references. If you name LU!$A:$A to somethig like \Codes, that make the formula a little easier. If you want to look at a specific range rather than the whole column, name the range and add the value of the first row in the range minus 1
=OFFSET( INDIRECT( "'LU'!" & ADDRESS( MATCH(OFFSET(B2,0,-1,1,1),\Codes,0) ,COLUMN(\Codes) ) ) ,0,1,1,3 )
=OFFSET( INDIRECT( "'LU'!" & ADDRESS( MATCH(OFFSET(B2,0,-1,1,1),\Codes,0)+ROW(\Codes)-1 ,COLUMN(\Codes) ) ) ,0,1,1,3 )
If you want to be able to autoadjust if the sheetname is changed, you need to replace "'LU'!" with something to figure out the sheetname. Substitute the below for "'LU!'" ...
"'"&MID(CELL("filename",LU!$A$1),FIND("]",CELL("filename",LU!$A$1))+1,255)&"'!"
"'"&MID(CELL("filename",\Codes),FIND("]",CELL("filename",\Codes))+1,255)&"'!"
Like the other, it's cleaner to use a Name to refer to figuring out the sheet name. For the formula below, I created a name called \LUName that use the MID/CELL/FIND above to get the sheet name. The resulting formula is ...
=OFFSET(INDIRECT(\LUSheet&ADDRESS(MATCH(OFFSET(B2,0,-1,1,1),\Codes,0)+ROW(\Codes)-1,COLUMN(\Codes))),0,1,1,3)
So, name the lookup range of codes to \Codes, create a name called \LUName equal to the MID/CELL/FIND stuff above, and replace B2 with the cell address you want the dropdown in. Then, paste that formula into the Data Validation - List - Source. Copy and paste that wherever you want.
One final note - If there is no Code Lookup Match, it doesn't give an error - the dropdown just doesn't work.