Solution 1:

This can be done without the volatile Offset, using Index/Match. The challenge here is that you first have to locate the column in which to perform the match. This column can be found with and Index on the wage columns, using an exact match to find the filing status in row 2. Note that the second argument for the rows remains blank. Index will then return a range, not a single cell.

INDEX($C$3:$D$12,,MATCH($H$3,$C$2:$D$2,0))

In that range you want to match the wage with an approximate lookup, using a 1 as the last argument, which requires the data to be sorted.

MATCH($H$2,INDEX($C$3:$D$12,,MATCH($H$3,$C$2:$D$2,0)),1)

This returns the row number of the found or approximate match. Use that row number inside another Index on the tax rate. Here is the complete formula

=INDEX($B$3:$B$12,MATCH($H$2,INDEX($C$3:$D$12,,MATCH($H$3,$C$2:$D$2,0)),1))

enter image description here