sábado, 12 de enero de 2013

Funciones BD

Excel dispone de un conjunto de funciones que comienzan con las iniciales BD y que sirven para trabajar con bases de datos. Se usan de un modo similar a los criterios de selección en las Consultas de Access. A los lectores que conozcan Access les resultará familiar su manejo.

Éstas son las funciones BD:

=BDCONTAR Cuenta las celdas que contienen números en el campo (columna) de registros de la base de datos que cumplen las condiciones especificadas
=BDCONTARA Cuenta el número de celdas que no están en blanco en el campo (columna) de los registros de la base de datos que cumplen las condiciones especificadas
=BDDESVEST Calcula la desviación estándar basándose en una muestra de las entradas seleccionadas de una base de datos
=BDDESVESTP Calcula la desviación estándar basándose en la población total de las entradas seleccionadas de una base de datos
=BDEXTRAER Extrae de una base de datos un único registro que coincide con las condiciones especificadas
=BDMAX Devuelve el número máximo en el campo (columna) de registros de la base de datos que coinciden con las condiciones especificadas
=BDMIN Devuelve el número menor del campo (columna) de registros de la base de datos que coinciden con las condiciones especificadas
=BDPRODUCTO Multiplica los valores del campo (columna) de registros en la base de datos que coinciden con las condiciones especificadas
=BDPROMEDIO Obtiene el promedio de los valores de una columna, lista o base de datos que cumplen las condiciones especificadas
=BDSUMA Suma los números en el campo (columna) de los registros que coinciden con las condiciones especificadas
=BDVAR Calcula la varianza basándose en una muestra de las entradas seleccionadas de una base de datos
=BDVARP Calcula la varianza basándose en la población total de las entradas seleccionadas de una base de datos

Todas tienen la misma sintaxis:

Sintaxis: FUNCIÓN_BD(base_de_datos;nombre_de_campo;criterios)
  • base_de_datos: Es la tabla o base de datos.
  • nombre_de_campo: Es el nombre de la columna de la tabla sobre la que se va a realizar el cálculo.
  • criterios: Es el rango de celdas que contiene las condiciones que se van a utilizar en el cálculo.
El rango de criterios puede colocarse en cualquier lugar pero, para permitir la adición de nuevos datos, se desaconseja situarlo debajo de la tabla.

Vamos a emplear la función BDCONTAR para ilustrar cómo se usan las funciones BD. Utilizaremos una base de datos ficticia que colocaremos en el rango B9:F41, dejando las filas 1 a 7 para situar los criterios. La fórmula la pondremos en H10.



Primer ejemplo

Contar las veces que la Empresa Ascensores J & C ha hecho Aportaciones comprendidas entre 150 y 300, teniendo, al mismo tiempo, algún valor en la columna Devolución.

Copiamos los encabezamientos de la base de datos en B2:F2. Como el criterio que vamos a emplear requiere hacer dos comprobaciones en el campo Aportación, necesitamos dos celdas con este título. Por tanto, escribimos Aportación en G2.

En la celda B3, escribimos:
="=Ascensores J & C"     [Excel mostrará: =Ascensores J & C]

En C3:
>150

En G3:
<300

Los tres criterios están en la misma fila. Esto significa que están vinculados mediante el operador Y. Dicho de otra forma: (El campo Empresa contiene Ascensores J & C) Y (Aportación es mayor que 150) Y (Aportación es menor que 300).

Como queremos contar el número de celdas no vacías de la columna Devolución que cumplen los tres criterios, la fórmula que pondremos en H10 será:

En H10:
=BDCONTAR(B9:F41;D9;B2:G3)    [Resultado: 2]



El primer argumento es el rango que ocupa la base de datos; el segundo, es el campo sobre el que vamos a aplicar la función (contar registros); el tercero, el el rango que ocupa los criterios. El segundo argumento, D9, podemos sustituirlo por el nombre del campo. Si lo hacemos así, la fórmula sería: =BDCONTAR(B9:F41;"Devolución";B2:G3)

Segundo ejemplo

Contar las veces que Ascensores J & C ha hecho Aportaciones mayores que 300 o menores que 200 y haya algún dato en la columna Devolución.

Los criterios deberán ser:



Cuando se usa el operador O los criterios van en filas distintas.

En este caso, la fórmula será:

En H10:
=BDCONTAR(B9:F41;D9;B2:C4)    [Resultado: 2]

Tercer ejemplo

Contar las veces que cualquier empresa distinta de Ascensores J & C haya hecho Aportaciones mayores que 200 y haya algún dato en la columna Devolución.



En H10:
=BDCONTAR(B9:F41;D9;B2:C3)     [Resultado: 8]

Cuarto ejemplo

Contar las veces que cualquier empresa, excluidas Ascensores J & C y Decoraciones Eder, haya hecho Aportaciones mayores que 200 y haya algún dato en la columna Devolución.



En H10:
=BDCONTAR(B9:F41;D9;B2:H3)     [Resultado: 8]

Quinto ejemplo

Contar celdas no vacías de Devolución que cumplan:
  • Ascensores J & C tenga Aportación entre 150 y 300, O
  • Decoraciones Eder tenga Rendimiento=6, O
  • Decoraciones Eder tenga Beneficios >3500, O
  • Pascual Reina tenga Aportaciones >84


En H10:
=BDCONTAR(B9:F41;"Devolución";B2:G6)     [Resultado: 6]

Sexto ejemplo

Contar celdas no vacías de Devolución que cumplan:
  • La Empresa no debe ser Ascensores J & C
  • La Empresa no debe ser Metalkarma, S.L.
  • Beneficio menor que la media de beneficios de todas las empresas
Estamos ante un caso complejo ya que no conocemos el promedio de la columna Beneficio para poner el criterio. Podemos calcularlo en una celda vacía o poner la fórmula correspondiente en la zona de criterios. El primer método es poco recomendable ya que requiere cambiar la fórmula si se modifica algún valor de la columna Beneficio. Veamos cómo se haría.

En H14 (o cualquier otra celda vacía):
=PROMEDIO(F10:F41)     [Resultado: 2.565,67]

Conocido el promedio, ponemos los criterios:



La fórmula en H10 sería:
=BDCONTAR(B9:F41;"Devolución";B2:G3)     [Resultado: 14]

Es mejor utilizar el segundo método: poner una fórmula en la zona de criterios. Sin embargo, antes hay que conocer una serie de condiciones de obligado cumplimiento (extraídas de la ayuda de Excel):
  • La fórmula se debe evaluar como VERDADERO o FALSO.
  • Puesto que está utilizando una fórmula, escriba la fórmula como lo haría normalmente, pero no la escriba de la forma siguiente: =''=entrada''
  • No utilice rótulos de columnas para los rótulos de los criterios; deje los rótulos de criterios en blanco o utilice uno que no sea un rótulo de columna incluido en el rango.
  • Si en la fórmula utiliza un rótulo de columna en lugar de una referencia relativa a celda o un nombre de rango, Excel presenta un valor de error, como por ejemplo #¿NOMBRE? o #¡VALOR!, en la celda que contiene el criterio. Puede pasar por alto este error, ya que no afecta a la manera en que se filtra el rango.
  • La fórmula que utilice con el fin de generar los criterios debe utilizar una referencia relativa para hacer referencia a la celda correspondiente de la primera fila.
  • Todas las demás referencias usadas en la fórmula deben ser referencias absolutas.
 A la nueva columna de la zona de criterios le llamaremos Auxiliar y la fórmula será:

En H3:
=F10<PROMEDIO($F$10:$F$41)     [Resultado: FALSO]



F10 es la primera celda de la columna con la que vamos a hacer el cálculo (en nuestro caso la media aritmética). Debe ser una referencia relativa (no lleva signo $). Todas las demás referencias deben ser absolutas (llevan signo $).

En H10:
=BDCONTAR(B9:F41;"Devolución";B2:H3)     [Resultado: 14]

Séptimo ejemplo

Contar celdas no vacías de la columna Devolución de las empresas que sean sociedades anónimas (S.A.) o sociedades limitadas (S.L.)

En este caso tendremos que usar caracteres comodín: asterisco (*) e interrogación (?). El asterisco sustituye a un número indeterminado de caracteres; la interrogación, solamente a uno.











Si entre los elementos buscados hay una interrogación o un asterisco, para incluirlo en la búsqueda debe ir precedido de la tilde (~).

En H10:
=BDCONTAR(B9:F41;"Devolución";B2:B3)     [Resultado: 6]

Descargar archivo (SE10-EmpresasBD.xlsx)

Descargar archivo (SE10-EmpresasBD.xls)

9 comentarios:

  1. hola javier

    entrada muy interesante, hay alguna alternativa con contar.si y usando "Y" a BDextraer para extraer el registro que querríamos?

    Me gustaría suscribirme a tu blog pero no encuentro el enlace,

    Saludos y gracias!

    Alicia Olivares.

    ResponderEliminar
  2. tambiéne estaba pensando en exportarme la hoja a Acces para trabajar con ella las consultas de selección en SQL...

    ResponderEliminar
  3. k buen ejemplo .. aplusos para ti !!!

    ResponderEliminar
  4. Excelente Material! Muchas Gracias!

    ResponderEliminar
  5. Muy útiles, de verdad que...muchas gracias.
    No hay palabras.
    Solo Gracias

    ResponderEliminar
  6. Muy buen aporte..! Muchas gracias...!

    ResponderEliminar
  7. Hola Javier,
    Gracias por el taller es muy practico y muy completo para aprender estas formulas.
    En el punto (6) me demore bastante ya que no me coincidia mi respuesta con la tuya dado que en el enunciado tu pides la MEDIA, y en el ejercicio lo desarrollas con PROMEDIO.

    ResponderEliminar
  8. jhon pedaso de sorete

    ResponderEliminar
  9. Hola Gracias por tu aporte seria bueno que suba los archivos de la base datos gracias de antemanos.

    ResponderEliminar