none
Sumatorio determinadas filas en matriz dinámica RRS feed

  • Pregunta

  • Buenas tardes a todos,  os planteo mi pregunta;

    Tengo una matriz que genera X columnas de las cuales, algunas pertenecen al perido actual y otras al perodo anterior, querría poder sumar para cada fila, aquellas celdas que pertenezcan al perido actual, la única forma que tienen de distinguirse es que el nombre de las columnas si es periodo actual es nombreEmpresan- y si es periodo anterior nombreEmpresan_1. He intentado hacer el sumatorio de las que son del periodo actual con la siguiente formula =iif(InStr(Fields!descr_periodo.Value,"n-")>0,SUM(Fields!valores.Value),Nothing), se que lo de nothing no está bien porque si la última no es del periodo no devuelve nada, per no se si se puede hacer un Join de la suma y hacer Sum(0). La verdad es que estoy buscando por la web y no encuentro ningún ejemplo.

    Gracias de antemano.

    Saludos
    jueves, 19 de julio de 2012 17:00

Respuestas

  • Tienes el IIF al revés, lo que hay que hacer no es un iif del sum, sino un sum del iif:

    =SUM(iif(InStr(Fields!descr_periodo.Value,"n-")>0,Fields!valores.Value,0)

    De esta forma, en cada campo se evalúa si hay que sumarlo (y sino se pone 0) y luego se hace la suma de todos ellos. Tal como tú lo habías puesto, primero se suman todos, y luego el iif decide si el total se presenta o no.

    viernes, 20 de julio de 2012 7:15
    Moderador
  • Si en la columna Fields!descr_periodo.Value tienes numeros enteros, prueba a darle formato así

    =SUM(iif(InStr(CInt(Fields!descr_periodo.Value),"n_1")>0,Fields!valores.Value,0))

    o con CDbl si tienes numeros decimales.

    Saludos.

    martes, 14 de agosto de 2012 15:14

Todas las respuestas

  • Tienes el IIF al revés, lo que hay que hacer no es un iif del sum, sino un sum del iif:

    =SUM(iif(InStr(Fields!descr_periodo.Value,"n-")>0,Fields!valores.Value,0)

    De esta forma, en cada campo se evalúa si hay que sumarlo (y sino se pone 0) y luego se hace la suma de todos ellos. Tal como tú lo habías puesto, primero se suman todos, y luego el iif decide si el total se presenta o no.

    viernes, 20 de julio de 2012 7:15
    Moderador
  • Buenas tardes Alberto,

    Me aparece #Err en todas las filas al poner la fórmula que me has indicado =SUM(iif(InStr(Fields!descr_periodo.Value,"n_1")>0,Fields!valores.Value,0)),

    Se que es correcta porque si pongo =SUM(iif(InStr(Fields!descr_periodo.Value,"n_1")>0,1,0)), es decir un 1 en lugar de Fields!valores.Value, en cada fila me pone 4 y es correcto porque tengo 4 columnas que contienen "n_1". Entonces donde está el problema? Fields!valores.Value es un decimal, he probado a poner en la fórmula anterior 0.001 en lugar de Fields!valores.Value y también muestra los datos correctamente (0.004 en casa fila).

    No se si será porque el valor que se le tiene que asignar en el iif para suma sea estático.

    También he comprobado en una columna aparte haciendo únicamente sum(Fields!valores.Value) y lo suma correctamente, se ve que al combinar sum e iif hay alguna restricción.

    Si alguien me pudiera encaminar. Gracias

    Saludos,

    viernes, 20 de julio de 2012 12:07
  • Si en la columna Fields!descr_periodo.Value tienes numeros enteros, prueba a darle formato así

    =SUM(iif(InStr(CInt(Fields!descr_periodo.Value),"n_1")>0,Fields!valores.Value,0))

    o con CDbl si tienes numeros decimales.

    Saludos.

    martes, 14 de agosto de 2012 15:14