Como sumar datos vacíos o nulos

Tengo una consulta y con esta una consulta de referencia cruzada, con esta ultima he creado un informe de ventas. Los encabezados son meses y años(2015-2016) a la derecha de años he puesto un campo así

 =([2016]-[2015])

El problema es que en algunos meses no hay valor por lo que no realiza la operación, como puedo solucionar esto.

2 respuestas

Respuesta
2

Prueba con:  =(Nz([2016];0)-Nz([2015];0))

Esto es lo que tengo en el Detalle del Informe:

Cliente _ Mes _ 2015 _ 2016 _ =Suma(Nz([2016];0)-Nz([2015];0))

pero los meses que no tienen valor en ese año siguen saliendo en blanco, por lo que la operación no se realiza.

=Suma(SiInm(Nz([2016];"")="";0;[2016])-SiInm(Nz([2015];"")="";0;[2015]))

Si así no te funciona, tendrás que solucionarlo en la consulta de refs cruzadas o en al anterior, usando Nz para darle un valor0 a los meses que no lo tengan

Te mando unas imágenes donde puedes ver como esta diseñado y el resultado. A es 2016 y A-1 es 2015. Veras que hay meses que no tienen  valor en A-1 y por tanto no realiza la operación en la celda DIF, de la misma manera veras que no salen todos los meses ya que en ninguno de los años hay valores, pero deberían salir todos los meses.

Gracias

He usado la fórmula que me has mandado y este es el resultado. Lo que no se es como utilizar NZ en la consulta de Ref. Cruzada o en la consulta de esta.

Esas imágenes, no me dicen nada, salvo que espero que no hayas probado literalmente a poner:

=Suma(Nz([2016];0)-Nz([2015];0))

Y lo hayas adaptado a tus nombres...

¿Probaste el SiInm()? ¿Qué resultados dio?

Recién te he mandado el resultado con Silnm, y mi pregunta era como usarlo en la tabla de ref. cruzada o en su tabla anterior.

Tendría que ver las tablas y las consultas para saber cómo las tienes montadas

Se me acaba de ocurrir una idea, pruébala a ver qué te parece:

Con la consulta de ref. Cruzadas que tienes originalmente, crea una consulta de selección, y en los campos A, A-1, A-2... le aplicas la función Nz para convertir los nulos a ceros y así poder hacer operaciones sin problemas

Los encabezados te quedarían así (tendrás que cambiarles el nombre, y luego en la etiqueta del informe le pones el que te convenga):

N_A: Nz(A;0)  |  N_A-1: Nz([A-1];0)  |  N_A-2: Nz([A-2];0)


Sveinbjorn El Rojo:

Buenas. si puedes  me mandas tu corro y te mandaría una demo para ver si puedo solucionar este problema.

Gracias.

[email protected]

Es de solo recepción, por lo que si te responderé por aquí. Avísame cuando lo envíes.

Te mande a un correo que no se si es el que aparece.

Parece que no has probado la solución de mi último mensaje de ayer, así que te la repito aquí, pero con tus datos:

Crea una consulta en vista sql y pega esto:

SELECT [03000CRCVentasTotalNetoGINER].cod_cliente, [03000CRCVentasTotalNetoGINER].Mes, CCur(Nz([A-2],0)) AS Expr1, CCur(Nz([A-1],0)) AS Expr2, CCur(Nz([A],0)) AS Expr3
FROM 03000CRCVentasTotalNetoGINER;

Cuando la ejecutes tendrás los mismos datos que tu consulta de refs. Cruzadas, pero sin blancos, con lo que no tendrás problemas para hacer tus sumas y restas entre años.

Lo que no te soluciona, pero no me parece importante, es si en algún mes no tienes operaciones, que no te aparecerán.

Para esto último, habría que hacer alguna "trampilla" y trabajar con una tabla temporal y bastante programación (a menos que alguien te ofrezca una mejor solución)- El proceso, que no te lo voy a hacer sería:

1º/ crear esta consutla de referencias cruzadas, que sí muestra todos los meses (en los encabezados, aunque no tenga movimiento):

TRANSFORM Sum([030 000 Ventas Total NetoGINER].neto) AS SumaDeneto
SELECT [030 000 Ventas Total NetoGINER].cod_año, [030 000 Ventas Total NetoGINER].cod_cliente
FROM [030 000 Ventas Total NetoGINER]
GROUP BY [030 000 Ventas Total NetoGINER].cod_año, [030 000 Ventas Total NetoGINER].cod_cliente
PIVOT [030 000 Ventas Total NetoGINER].Mes In ("ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic");

2º/ Crea una tabla que tenga los mismos campos (y tipo de datos) que la consulta de refs. Cruzadas actual (cod_cliente, mes, a-2, a-1, a)

3º/ Por código, tendrás que pasar los resultados de la consulta del punto 1 a la tabla del punto 2, ya sea con recodsets o SQLs de datos insertados.

El proceso sería:

Primer registro, miras el cod_año, e insertas en la tabla del punto 2 un registro con el cod_cliente, el mes "ene" y el valor de "ene" (o 0 si no tiene valor) en la columna correspondiente al cod_año. Haces lo mismo para los otros 11 meses.

Te mueves al registro siguiente y repites el proceso.

Te va a llevar un rato que complete todo...

También podrías usar una función para trasponer la consulta, partiendo de esta como base: https://support.microsoft.com/es-es/kb/283875 

¡Gracias! 

He entendido tu respuesta y ahora si salen los ceros. Es una consulta sobre la consulta de ref. cruzada, lo otro que me mandas no me hace falta.

Muchas gracias.

Me alegra saber que te sirvió mi propuesta.

Respuesta
1

Gracias por ayuda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas