top of page
Foto del escritorJaime Franco Jimenez

La función BDSUMA


Vamos a revisar las funciones de bases de datos.


Empecemos por la función BDSUMA, esta función sumara solo cuando se cumplan los criterios que le especifiquemos.


Por ejemplo, en el siguiente modelo de datos, queremos ver las ventas del cliente.

Esta modelo, está en formato de tabla.





Antes de ver esta función, vamos a preparar los clientes para crear la validación de datos.


En la celda X1, voy a hacer uso de la función UNICOS, aplicada a la columna de clientes de la tabla datos.


=UNICOS(Datos[Cliente])


Aceptamos, y, tenemos los clientes únicos.










En la celda K2, es donde vamos a crear nuestro desplegable, para ello, una vez seleccionada la celda, vamos a la pestaña datos, dentro del grupo herramientas de datos, hacemos clic en validación de datos.













Se abre la ventana validación de datos, desplegamos permitir, y, seleccionamos lista.











En la ventana origen, seleccionamos los datos.










Aceptamos, y, ya tenemos nuestra lista desplegable.








Si no disponemos de la función UNICOS, podemos hacerlo, seleccionado la columna.












Pulsamos CTRL más C para copiar.


Seleccionamos, por ejemplo, la columna Z.








Pulsamos CTRL más V para pegar.









Teniendo la columna seleccionada, vamos a la pestaña datos, dentro del grupo herramientas de datos, hacemos clic en quitar duplicados.









Se abre la ventana quitar duplicados, donde en la ventana inferior, vemos nuestra columna, cliente, y, marcada.













Simplemente, aceptamos.


Aparece una ventana donde nos indica la cantidad de valores duplicados quitados, y, los valores únicos que han resultados.







Aceptamos, y, tenemos otra forma de quitar duplicados.











Pues, seleccionamos un cliente, y, vamos a ver los argumentos de la función BDSUMA.


En una celda escribo:


=BDSUMA(


El primer argumento es base de datos, podemos seleccionarlo manualmente, o, ponerle un nombre a todo el rango de datos, yo voy a seleccionar el rango manualmente.


=BDSUMA(Datos[# Todo];


El segundo argumento es nombre_de_campo, es decir, la columna por la que queremos filtrar, podemos poner el nombre de un encabezado de columna entre comillas dobles, o, el número de columna, yo voy a poner el número de columna.


=BDSUMA(Datos[# Todo];9;


El siguiente argumento es criterios, el criterio lo vamos a seleccionar con el ratón, pero, muy importante, primera debe de haber en encabezado por el cual vamos a filtrar, y, el nombre de este encabezado debe de ser el mismo que el encabezado del modelo de datos, y, debajo de este encabezado ponemos el, o, los criterios, pues seleccionamos el criterio, porque en este caso, es solo uno.





=BDSUMA(Datos[# Todo];9;K1:K2)


Aceptamos, y, tenemos los totales de venta del cliente seleccionado.






Lo siguiente que quiero saber es los totales pero de un cliente y una obra.


Vamos a crear dos desplegables, uno para cliente, y, otro para obra, donde vamos a crear dos nombres de rangos, uno va a ser cliente, y, otro va a ser obra, pero se nos presenta el problema que si elegimos un cliente, en el desplegable de obra, van a aparecer todas las obras, y, solo deberán de aparecer las obras del cliente que hemos seleccionado.


Esto lo vamos a solventar con la función FILTRAR, vamos a realizar un cuadro, donde en horizontal aparezcan los clientes, y, debajo de cada cliente, las obras de dicho cliente, para poder, después, crear las dos validaciones de datos.


En la celda P1, vamos a traernos los clientes únicos en horizontal, para ello, usamos la función UNICOS aplicada a la columna cliente, donde obtenemos los clientes únicos, pero en vertical.


=UNICOS(Datos[Cliente])


Pues, ahora, transponemos.


=TRANSPONER(UNICOS(Datos[Cliente]))


Y tenemos los clientes en horizontal.




Copiamos y pegamos como valores, en caso contrario, nos dará problema a la hora de crear los nombres de rangos.


Seguimos, vamos a traernos las obras para cada cliente, de manera, que cuando seleccionemos un cliente, en el siguiente desplegable aparezcan las obras de ese cliente.


En la celda P2, escribimos el signo igual, seguido del nombre de la función, y, abrimos un paréntesis.


=FILTRAR(


Como argumento array, seleccionamos la columna de obra, que es la que vamos a filtrar.


=FILTRAR(Datos[Obra];


Como argumento include, seleccionamos la columna de cliente, y, la igualamos al valor de P1.


Cerramos paréntesis, y, aceptamos.


=FILTRAR(Datos[Obra];Datos[Cliente]=P1)


Ya tenemos las obras de dicho cliente, pero repetidas, por lo que englobamos esta función, dentro de la función UNICOS.


=UNICOS(FILTRAR(Datos[Obra];Datos[Cliente]=P1))


Aceptamos, y, ya tenemos las obras del cliente, pero únicas.







Copiamos y pegamos como valores, en caso contrario, nos dará problema a la hora de crear los nombres de rangos.


Ahora, debemos de arrastrar esta expresión hacia la derecha, para ello, seleccionamos la celda con la función, y, pulsamos CTRL más C para copiar, después, seleccionamos las celdas donde vamos a copiar.




Pulsamos CTRL más V para pegar.


Ya tenemos las obras para cada cliente.






Pero aun no podemos crear los nombres de rangos, porque lo vamos a hacer mediante crear desde la selección, donde primero, debemos de seleccionar el rango completo, y, tal cual esta, si selecciono el rango, vemos que hay un cliente que tiene mas obras que los demás, pues al seleccionar todo el rango, los clientes que tengan menos obras serán rellenadas con celdas en blanco, y, eso no lo queremos.


Me voy a colocar en la celda P1, y, pulso CTRL mas asterisco, podemos ver que queda todo el rango seleccionado, incluye esas celdas en blanco.






Vamos a solventar este problema.


Teniendo el rango seleccionado, pulsamos F5.


Se abre la ventana Ir a.











Hacemos clic en especial.











Se abre la ventana ir a especial.















Vemos constantes, pues la seleccionamos, esto quiere decir que solo queden marcados texto, números…















Aceptamos, y, vemos como ha quedado seleccionado solo los datos.







Ahora, si podemos crear los nombres de rangos, donde no habrá celdas en blanco, para ello, vamos a la pestaña formulas, y, dentro del grupo nombres definidos, hacemos clic en crear desde la selección.








Dejamos marcado fila superior, para que la use como nombre de rango










Aceptamos, y, ya tenemos creados los nombres de rangos.


Si desplegamos el cuadro de nombres los veremos.













Ya tenemos la lista desplegable para cliente, pues, al lado vamos a hacer la lista desplegable para rellenar con las obras del cliente seleccionado.


Seleccionaos la celda J6, es donde vamos a crear esta segunda lista desplegable, vamos a la pestaña datos, dentro del grupo herramientas de datos, hacemos clic en validación de datos, desplegamos permitir, y, elegios lista, y, en la ventana origen, vamos a hacer uso de la función INDIRECTO, esta función va a cargar el nombre de rango que haya en la celda K6, por eso, los nombres de rangos deben de ser iguales que los clientes, entones, ponemos:





Si probamos seleccionado un cliente, veremos como este segundo desplegable, ha sido rellenado con las obras de dicho cliente.






Pues, ya tenemos los criterios para usar la función BDSUMA, la sintaxis seria:


Escribimos el signo igual, seguido del nombre de la función, y, abrimos un paréntesis.

=BDSUMA(


Como argumento array, seleccionamos el modelo completo.


=BDSUMA(Datos[# Todo];


Como argumento nombre de campo, ponemos la columna 9, que es la que queremos rescatar.


=BDSUMA(Datos[# Todo];9;


Como argumento criterios, seleccionamos desde K5 hasta L6, es decir, cliente y obra.


Cerramos paréntesis, y, aceptamos.


=BDSUMA(Datos[# Todo];9;K5:L6)


Y ya tenemos los totales para cliente y obra seleccionados, en este caso, son dos criterios.





Bien, ahora lo que queremos es saber el número de unidades vendidas solo en el año 2016, lo cual usaremos dos criterios, el primero sea >=01/01/2016, y, el segundo será <=31/12/2016, recordar, que debe de tener el mismo encabezado que el del modelo de datos.







La sintaxis para usar es la es la que hemos usado anteriormente, lo único que va a cambiar es que queremos recuperar la columna numero 7, y, los criterios, es el encabezado de fecha mas las dos fechas


=BDSUMA(Tabla1[# Todo];7;K9:K11)


Aceptamos, y, vemos los totales.







391 visualizaciones0 comentarios

Entradas Recientes

Ver todo

Comments


bottom of page