Você recebe este erro devido ao IF() interno.
Quando Z58 contém "BX17" IFERROR() retorna 1 (como número), caso contrário, retorna "DDR".
Quando Z58 contém "BX17", o IF() em torno dele retorna "BX18", caso contrário, retorna o #VALUE -error.
IF() interpreta o retorno de 1 como TRUE e interpretaria 0 como FALSE . Mas não pode interpretar a string "DDR" que é retornada.