
Estoy intentando envolver cada fórmula con una declaración IFERROR para mi fórmula anidada a continuación. Revisé otras fuentes y descubrí que esto se puede hacer con una coma entre las dos. Creo que lo que me está desconcertando es que tengo la & " "
declaración if entre cada (que debo conservar).
A continuación se muestra mi fórmula original y mi fórmula más reciente con lo que he probado. La fórmula no toma. No estoy seguro de cómo hacer esto correctamente. ¿Qué estoy haciendo mal?
Fórmula original
=TRIM(
IFERROR(
IF(AND($T9-TODAY()>=Key!$N$14,$T9-TODAY()<=Key!$M$14,$AA9<>"Complete",$G9<>"New Phase"),Key!$L$11,"")
& " "
& IF(AND($U9-TODAY()>=Key!$N$15,$U9-TODAY()<=Key!$M$15,$AB9<>"Complete",$G9<>"New Phase"),Key!$L$10,"")
& " "
& IF(AND($M9-TODAY()>=Key!$N$9,$M9-TODAY()<=Key!$M$9,$Z9<>"Complete"),Key!$L$9,"")
& " "
& IF(AND($AH9-TODAY()>=Key!$N$16,$AH9-TODAY()<=Key!$M$16,$AE9<>"Complete"),Key!$L$16,"")
,"error"))
Nueva fórmula
=TRIM(
IFERROR(
IF(AND($T9-TODAY()>=Key!$N$14,$T9-TODAY()<=Key!$M$14,$AA9<>"Complete",$G9<>"New Phase"),Key!$L$11,"")
,"Error MUC Video")),
& " "
IFERROR(
& IF(AND($U9-TODAY()>=Key!$N$15,$U9-TODAY()<=Key!$M$15,$AB9<>"Complete",$G9<>"New Phase"),Key!$L$10,"")
,"Error SMR Video"))
& " "
& IF(AND($M9-TODAY()>=Key!$N$9,$M9-TODAY()<=Key!$M$9,$Z9<>"Complete"),Key!$L$9,"")
& " "
& IF(AND($AH9-TODAY()>=Key!$N$16,$AH9-TODAY()<=Key!$M$16,$AE9<>"Complete"),Key!$L$16,"")
Respuesta1
Tienes una fórmula grande y desordenada cuyo formato la hace más legible. Voy a empezar haciéndolo mucho más corto para que sea más fácil de seguir. Primero, deshagámonos de todas las grandes declaraciones AND:
=TRIM(
IFERROR(
IF(AND(a1,a2,a3,a4),a99,"")
& " "
& IF(AND(b1,b2,b3,b4),b99,"")
& " "
& IF(AND(c1,c2,c3),c99,"")
& " "
& IF(AND($d1,d2,d3),d99,"")
,"error"))
En realidad, eliminémoslos por completo. Solo usaremos un único sustituto para las fórmulas AND:
=TRIM(
IFERROR(
IF(a1,a99,"")
& " "
& IF(b1,b99,"")
& " "
& IF(c1,c99,"")
& " "
& IF(d1,d99,"")
,"error"))
Podemos seguir eso mucho más fácilmente ahora. TRIM eliminará espacios y IFERROR detectará errores. ¿Qué hay dentro de IFERROR? Es una concatenación de varias cadenas:
IF(a1,a99,"") & " " & IF(b1,b99,"") & " " & IF(c1,c99,"") & " " & IF(d1,d99,"")
¿Ves como cada SI tiene un espacio entre sí? Puedes combinar cadenas simplemente poniendo un signo &
entre ellas. En este caso, las cadenas son lo que devuelve el IF y los espacios " "
.
Ahora digamos que desea envolver uno de esos IF en un IFERROR. Veamos cómo lo tienes en tu pregunta, nuevamente con una pequeña simplificación:
=TRIM(
IFERROR(
IF(AND(a1,a2,a3,a4),a99,"")
,"Error MUC Video")),
& " "
IFERROR(
& IF(AND(b1,b2,b3,b4),b99,"")
,"Error SMR Video"))
& " "
& IF(AND(c1,c2,c3),c99,"")
& " "
& IF(AND($d1,d2,d3),d99,"")
Ya puedo decir que los paréntesis ( )
están desordenados en alguna parte porque solo tienes 1 al final. Ignorémoslo por ahora y trabajemos únicamente en la parte SIERROR. Podemos simplificarlo aún más como lo hicimos anteriormente.
=TRIM(
IFERROR(
IF(a1,a99,"")
,"Error MUC Video")),
& " "
IFERROR(
& IF(b1,b99,"")
,"Error SMR Video"))
& " "
& IF(c1,c99,"")
& " "
& IF(d1,d99,"")
Todavía es un poco difícil de leer. ¿Qué pasa si lo formateamos así?
=TRIM(
IFERROR(
IF(a1,a99,""),"Error MUC Video"
)
),
& " "
IFERROR(
& IF(b1,b99,""),"Error SMR Video"
)
)
& " "
& IF(c1,c99,"")
& " "
& IF(d1,d99,"")
El paréntesis después del primer SIERROR cierra la función TRIM.
El segundo IFERROR tiene el signo comercial.&
adentrola función. Debería estar antes.
El paréntesis después del segundo IFERROR no coincide con ningún paréntesis inicial.
La coma después del paréntesis de cierre tampoco debería estar ahí.
Falta un paréntesis de cierre para la función TRIM.
La fórmula debería parecerse más a esto:
TRIM( IFERROR() & " " & IFERROR() & " " & IF() & " " & IF() )
Teniendo todo eso en consideración, creo que su fórmula final sería mejor para usted si tuviera el formato siguiente:
=TRIM(
IFERROR(IF(AND($T9-TODAY()>=Key!$N$14,$T9-TODAY()<=Key!$M$14,$AA9<>"Complete",$G9<>"New Phase"),Key!$L$11,""),"Error MUC Video")
& " " &
IFERROR(IF(AND($U9-TODAY()>=Key!$N$15,$U9-TODAY()<=Key!$M$15,$AB9<>"Complete",$G9<>"New Phase"),Key!$L$10,""),"Error SMR Video")
& " " &
IF(AND($M9-TODAY()>=Key!$N$9,$M9-TODAY()<=Key!$M$9,$Z9<>"Complete"),Key!$L$9,"")
& " " &
IF(AND($AH9-TODAY()>=Key!$N$16,$AH9-TODAY()<=Key!$M$16,$AE9<>"Complete"),Key!$L$16,"")
)
Si desea envolver las dos últimas declaraciones IF en su propio IFERROR, lo formatearía de la misma manera que con las dos primeras. Mantenga cada pieza en su propia línea.
La próxima vez que tengas un problema como este con una fórmula grande, intenta reducirla como hice arriba para que puedas detectar el error más fácilmente.