If I understand the logic correctly, you want to:
Look for Q23 in P76:2044
If it's there, do an index from K based on that position, else do an index from K based on a match against L76:2044 (and trust that a match exists).
If that's right, then I would move the error trap to the MATCH function, rather than the INDEX, like so:
=INDEX(K$76:K$2044, IF(ISERROR(MATCH(Q23,P$76:P$2044,0)), MATCH(Q23,L$76:L$2044,0), MATCH(Q23,P$76:P$2044,0)) ,1)
(I've added some extra spaces to make it slightly clearer).
This should make it easier to debug, and probably more efficient to calculate since it only does two matches and one index, rather than 2 and 2 (although index is pretty efficient).
Since the array for the index is a single column, you could drop the final ",1", although personally I like the clarity it provides that this is definitely pulling a value from the first column.
Incidentally, this will still break if Q23 is not found in L nor P. Maybe that can't happen in your dataset, but just beware.