Escribir en Range.FormulaArray me da un #NAME! error

No hay nada realmente lujoso aquí, aunque necesito dividir la fórmula en 2 porque tiene más de 255 caracteres (fuentes:http://www.dicks-blog.com/archives/2005/01/10/entering-long-array-formulas-in-vba/ http://support.microsoft.com/kb/213181)

    f1 = "=SI(1=1,SOMME(SI(mySheet!$R:$R = ""something"",SI(mySheet!$AQ:$AQ = AM$1, NBCAR(Incidents!$AP:$AP)-NBCAR(SUBSTITUE(mySheet!$AP:$AP,$B2,"""")))))/NBCAR($B2)-X_X_X())"
    f2 = "SOMME(SI(mySheet!$R:$R = """",SI(mySheet!$AQ:$AQ = AM$1, SI(mySheet!$AM:$AM = $A2,SI(DROITE(mySheet!$AP:$AP,6) = $B2,1))))),"""""
    .Range("AM2").FormulaArray = f1
    .Range("AM2").Replace "X_X_X()", f2

Las fórmulas están en francés, lo que realmente no debería importar. La fórmula se devuelve correctamente en la celda AM2, así que aquí está el resultado:

={SOMME(SI(1=1;SI(mySheet!$R:$R = "something";SI(mySheet!$AQ:$AQ = AM$1; NBCAR(mySheet!$AP:$AP)-NBCAR(SUBSTITUE(mySheet!$AP:$AP;$B2;"")))))/NBCAR($B2)-SOMME(SI(mySheet!$R:$R = "something";SI(mySheet!$AQ:$AQ = AM$1; SI(mySheet!$AM:$AM = $A2;SI(DROITE(mySheet!$AP:$AP;6) = $B2;1)))));"")}

Sin embargo, obtengo un #NAME! error. Si analizo la fórmula de depuración, el error proviene de mi primera función, Excel no puede interpretarSI() (que es el francés paraIF()) Traté de eliminar por completo esoIF() cláusula pero luego Excel no puede interpretar la primera función que ahora esSOMME() (SUM())

Si solo hago clic en la barra de fórmulas y presiono CTRL + Shift + Enter (sin cambiar nada), devuelve el valor correcto.

¿Por qué Excel no me da el número correcto después de que VBA establece la fórmula de matriz? ¿Por qué funciona si soloreenviar la formula en Excel? ¿Y por qué siempre tiene problemas con la primera función? Supongo que hay otro tipo de limitación que no conozco.

Encontré otro problema similar mientras navegaba por la Web pero no había solución.

Respuestas a la pregunta(1)

Su respuesta a la pregunta