Está en la página 1de 22

FUNCIONES DEBASE DE DATOS EXCEL 2013

Funciones de base de datos en Excel

Las funciones de base de datos en Excel facilitan nuestro trabajo con informacin que est organizada como una
bases de datos, es decir, que se encuentra en un rango de celdas donde la primera fila tiene los ttulos de cada columna.

Estas funciones nos permiten contar, sumar, multiplicar los valores de una columna que cumplen con los criterios
especificados e inclusive podremos extraer un registro que cumpla con ciertas condiciones.

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 seleccin en las Consultas de Access. A los lectores que conozcan
Access les resultar familiar su manejo.

stas son las funciones BD:

FUNCIN INGLS DESCRIPCIN

BDCONTAR DCOUNT Cuenta las celdas que contienen nmeros en el campo (columna) de registros
de la base de datos que cumplen las condiciones especificadas.

BDCONTARA DCOUNTA Cuenta el nmero de celdas que no estn en blanco en el campo (columna) de
los registros de la base de datos que cumplen las condiciones especificadas.

BDDESVEST DSTDEV Calcula la desviacin estndar basndose en una muestra de las entradas
seleccionadas de una base de datos.

BDDESVESTP DSTDEVP Calcula la desviacin estndar basndose en la poblacin total de las entradas
seleccionadas de una base de datos.

BDEXTRAER DGET Extrae de una base de datos un nico registro que coincide con las condiciones
especificadas.

BDMAX DMAX Devuelve el nmero mximo en el campo (columna) de registros de la base de


datos que coinciden con las condiciones especificadas.

BDMIN DMIN Devuelve el nmero menor del campo (columna) de registros de la base de
datos que coincide con las condiciones especificadas.

BDPRODUCTO DPRODUCT Multiplica los valores del campo (columna) de registros en la base de datos que
coinciden con las condiciones especificadas.

BDPROMEDIO DAVERAGE Obtiene el promedio de los valores de una columna, lista o base de datos que
cumplen las condiciones especificadas.

BDSUMA DSUM Suma los nmeros en el campo (columna) de los registros que coinciden con las
condiciones especificadas.

Instructora: America Sabalu S 1


FUNCIONES DEBASE DE DATOS EXCEL 2013

BDVAR DVAR Calcula la varianza basndose en una muestra de las entradas seleccionadas
de una base de datos.

BDVARP DVARP Calcula la varianza basndose en la poblacin total de las entradas


seleccionadas de una base de datos.

Instructora: America Sabalu S 2


FUNCIONES DEBASE DE DATOS EXCEL 2013

Todas tienen la misma sintaxis:

Sintaxis: FUNCIN_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 clculo.
criterios: Es el rango de celdas que contiene las condiciones que se van a utilizar en el clculo.

El rango de criterios puede colocarse en cualquier lugar pero, para permitir la adicin de nuevos datos, se
desaconseja situarlo debajo de la tabla.

Vamos a emplear la funcin BDCONTAR para ilustrar cmo 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 frmula 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, algn valor en la columna Devolucin.

Instructora: America Sabalu S 3


FUNCIONES DEBASE DE DATOS EXCEL 2013

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 Aportacin, necesitamos dos celdas con este ttulo. Por tanto,
escribimos Aportacin en G2.

En la celda B3, escribimos:


="=Ascensores J & C" [Excel mostrar: =Ascensores J & C]

En C3:
>150

En G3:
<300

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

Como queremos contar el nmero de celdas no vacas de la columna Devolucin que cumplen los tres criterios, la
frmula 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 funcin (contar registros); el tercero, el el rango que ocupa los criterios. El segundo argumento, D9,

Instructora: America Sabalu S 4


FUNCIONES DEBASE DE DATOS EXCEL 2013

podemos sustituirlo por el nombre del campo. Si lo hacemos as, la frmula


sera:=BDCONTAR(B9:F41;"Devolucin";B2:G3)

Segundo ejemplo

Contar las veces que Ascensores J & C ha hecho Aportaciones mayores que 300 o menores que 200 y haya
algn dato en la columna Devolucin.

Los criterios debern ser:

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

En este caso, la frmula 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 algn dato en la columna Devolucin.

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 algn dato en la columna Devolucin.

Instructora: America Sabalu S 5


FUNCIONES DEBASE DE DATOS EXCEL 2013

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

Quinto ejemplo

Contar celdas no vacas de Devolucin que cumplan:


Ascensores J & C tenga Aportacin 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;"Devolucin";B2:G6) [Resultado: 6]

Sexto ejemplo

Contar celdas no vacas de Devolucin 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 vaca o poner la frmula correspondiente en la zona de criterios. El
primer mtodo es poco recomendable ya que requiere cambiar la frmula si se modifica algn valor de la
columna Beneficio. Veamos cmo se hara.

En H14 (o cualquier otra celda vaca):


=PROMEDIO(F10:F41) [Resultado: 2.565,67]

Conocido el promedio, ponemos los criterios:

Instructora: America Sabalu S 6


FUNCIONES DEBASE DE DATOS EXCEL 2013

La frmula en H10 sera:


=BDCONTAR(B9:F41;"Devolucin";B2:G3) [Resultado: 14]

Es mejor utilizar el segundo mtodo: poner una frmula en la zona de criterios. Sin embargo, antes hay que
conocer una serie de condiciones de obligado cumplimiento (extradas de la ayuda de Excel):
La frmula se debe evaluar como VERDADERO o FALSO.
Puesto que est utilizando una frmula, escriba la frmula como lo hara normalmente, pero no la escriba
de la forma siguiente: =''=entrada''
No utilice rtulos de columnas para los rtulos de los criterios; deje los rtulos de criterios en blanco o
utilice uno que no sea un rtulo de columna incluido en el rango.
Si en la frmula utiliza un rtulo 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 frmula 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 dems referencias usadas en la frmula deben ser referencias absolutas.
A la nueva columna de la zona de criterios le llamaremos Auxiliar y la frmula 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 clculo (en nuestro caso la media aritmtica).
Debe ser una referencia relativa (no lleva signo $). Todas las dems referencias deben ser absolutas (llevan signo
$).

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

Sptimo ejemplo

Contar celdas no vacas de la columna Devolucin de las empresas que sean sociedades annimas (S.A.) o
sociedades limitadas (S.L.)

En este caso tendremos que usar caracteres comodn: asterisco (*) e interrogacin (?). El asterisco sustituye a un
nmero indeterminado de caracteres; la interrogacin, solamente a uno.

Instructora: America Sabalu S 7


FUNCIONES DEBASE DE DATOS EXCEL 2013

Si entre los elementos buscados hay una interrogacin o un asterisco, para incluirlo en la bsqueda debe ir
precedido de la tilde (~).

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

Instructora: America Sabalu S 8


FUNCIONES DEBASE DE DATOS EXCEL 2013

Listas aleatorias (1 de 2)

El problema de hoy consiste en ordenar aleatoriamente una lista de nombres.

Excel dispone de dos funciones muy parecidas, ALEATORIO y ALEATORIO.ENTRE, que generan nmeros al
azar. En el primer caso, los nmeros generados estn comprendido entre 0 y 1. En el segundo, entre los dos
valores que fijemos. En este ejercicio, emplearemos la funcin ALEATORIO.

Dada una lista de nombres (C1:C9), queremos que Excel los ordene al azar cada vez que pulsemos la tecla F9.

En la columna B, con la funcin ALEATORIO, creamos una serie de nmeros aleatorios comprendidos entre 0 y 1.
Por qu en la columna B? Pronto comprenderemos la razn.

En B2:

=ALEATORIO() [Extendemos la frmula hasta la fila 9]

ALEATORIO es una funcin voltil, de modo que cada vez que pulsemos F9 o hagamos algn cambio en la hoja,
se recalcular y los valores de la columna B cambiarn.

La lista aleatoria la crearemos en tres pasos y la pondremos en la columna D. Usaremos las columnas F y G como
columnas auxiliares, que eliminaremos una vez creada la frmula definitiva.

Instructora: America Sabalu S 9


FUNCIONES DEBASE DE DATOS EXCEL 2013

Primero, ordenamos los nmeros aleatorios de la columna B de menor a mayor. Esto se hace con la funcin
K.ESIMO.MENOR. Cuando pongamos la frmula, los valores de la columna B se recalcularn y aparecern otros
diferentes.

En F2:

=K.ESIMO.MENOR($B$2:$B$9;FILA(A1)) [Extendemos la frmula hasta la fila 9]

Ahora, usando la funcin BUSCARV, extraemos de la matriz B2:C9 los nombres de la columna C cuyo valor
asociado (columna A) coincide con el de la columna F. La funcin BUSCARV realiza la bsqueda en la primera
columna de la matriz. sta es la razn por la que hemos puesto los nmeros aleatorios en esa posicin, a la
izquierda de los nombres, en la columna B.

En G2:

=BUSCARV(F2;$B$2:$C$9;2;FALSO) [Extendemos la frmula hasta la fila 9]

Excel ha hecho un nuevo recalculo. La lista de la columna G es una lista aleatoria. Si queremos otra, pulsamos
F9 o modificamos alguna celda.

Instructora: America Sabalu S 10


FUNCIONES DEBASE DE DATOS EXCEL 2013

Finalmente, creamos la frmula compuesta en D2 y borramos las columnas F y G.

En D2:

=BUSCARV(K.ESIMO.MENOR($B$2:$B$9;FILA(A1));$B$2:$C$9;2;FALSO) [Extendemos la frmula hasta la


fila 9]

Qu ocurre si no es posible poner la columna de nmeros aleatorios a la izquierda de la columna de nombres? La


respuesta es bien sencilla: no se podr utilizar la funcin BUSCARV. Habr que idear algn truco, como crear los
nmeros aleatorios en una zona vaca de la hoja y copiar la columna de nombres a su derecha.

Otra solucin es utilizar la funcin INDICE. Veamos cmo.

Nuestra lista de nombres est en la columna B y, por el motivo que sea, no podemos escribir nada en la
columna A.

La lista de nmeros aleatorios la crearemos en la columna E.

En E2:

=ALEATORIO() [Extendemos la frmula hasta la fila 9]

Instructora: America Sabalu S 11


FUNCIONES DEBASE DE DATOS EXCEL 2013

Clasificamos de menor a mayor los valores de la columna E usando la funcin JERARQUIA.EQV (en Excel 2003
hay que usar JERARQUIA).

En G2:

=JERARQUIA.EQV(E2;$E$2:$E$9;1) [Extendemos la frmula hasta la fila 9]

Con INDICE ponemos en la columna H el nombre de la columna B que ocupa la posicin indicada en la
columna G.

En H2:

=INDICE($B$2:$B$9;G2) [Extendemos la frmula hasta la fila 9]

Instructora: America Sabalu S 12


FUNCIONES DEBASE DE DATOS EXCEL 2013

Agrupamos todas las frmulas en la columna C y borramos las columnas G y H.

En C2:

=INDICE($B$2:$B$9;JERARQUIA.EQV(E2;$E$2:$E$9;1)) [Extendemos la frmula hasta la fila 9]]

Son posibles otras frmulas; por ejemplo:

En C2:

=INDICE($B$2:$B$9;COINCIDIR(K.ESIMO.MENOR($E$2:$E$9;FILA(A1));$E$2:$E$9;0))

Esta frmula devuelve una lista diferente de la anterior, pero tambin es totalmente aleatoria.

Sin embargo, las frmulas usadas aqu tienen un fallo. Aunque es poco problable en listas pequeas como la del
ejercicio, podra darse el caso de que dos nmeros aleatorios fueran exactamente iguales. En ese caso, uno de los

Instructora: America Sabalu S 13


FUNCIONES DEBASE DE DATOS EXCEL 2013

nombres se repetira. Por ejemplo, consideremos que ALEATORIO ha devuelto una lista de nmeros en los que
coinciden los correspondientes a las celdas E4 y E7. El resultado ser:

La columna G tendr dos valores iguales, lo que har que la frmula devuelva dos veces el mismo nombre
(Carlos). Otro (Iker) habr desaparecido de la lista aleatoria (columnas C y H).

Instructora: America Sabalu S 14


FUNCIONES DEBASE DE DATOS EXCEL 2013

Listas aleatorias (2 de 2)

Continuando con el artculo anterior, vamos a ordenar aleatoriamente una lista de nombres utilizando una macro.
Nos servir la macro empleada en la entrada Nmeros aleatorios no repetidos, aunque habr que hacer algunas
adaptaciones.

Para comenzar, preparamos la lista de nombres en la "Hoja3":

Las columnas E, F y G sern columnas auxiliares. La lista aleatoria la pondremos en la columna C.

Necesitaremos pasarle a la macro la cantidad de nombres que tiene la lista. Por ello, la primera operacin
consistir en realizar este clculo y almacenarlo en E2.

En E2:

=CONTARA(B:B)-1 [Resultado: 8]

Accedemos al editor de VBA pulsando Alt + F11, seleccionamos Insertar + Mdulo y escribimos el siguiente
procedimiento:

Instructora: America Sabalu S 15


FUNCIONES DEBASE DE DATOS EXCEL 2013

Salimos del editor pulsando Alt + Q.

Para ejecutar esta macro lo ms cmodo es poner un botn en la hoja. Se puede usar un Botn de
Formulario(Programador + Insertar + Botn (control formulario)), un Botn ActiveX (Programador + Insertar +
Botn de comando (control ActiveX)) o una forma cualquiera; por ejemplo, un Rectngulo redondeado.

Si elegimos la ltima opcin, tendremos que acceder a Insertar + Formas + Rectngulo redondeado y dibujar un
rectngulo en algn sitio cmodo de la hoja, como la celda C1. Redondeamos los laterales y, enHerramientas +
Formato + Estilos de forma, escogemos el estilo que ms nos guste. En el men contextual, elegimos Modificar
texto y escribimos: Nueva lista

Volvemos a abril el men contextual, seleccionamos Asignar macro y, en el cuadro de dilogo correspondiente,
seleccionamos Nmeros_no_repetidos. Terminamos pulsando el botn Aceptar.

Instructora: America Sabalu S 16


FUNCIONES DEBASE DE DATOS EXCEL 2013

El botn ya es plenamente operativo. Hacemos clic sobre l y en la columna F aparecer una lista de nmeros no
repetidos comprendidos entre 1 y 100000.

Ahora, asignamos a cada nmero un orden jerrquico. Lo haremos en la columna G.

En G2:

=SI.ERROR(JERARQUIA.EQV(F2;$F:$F;1);"") [Extendemos la frmula hasta la fila 30]

Si prevemos que la lista va a ser muy grande, habr que extender la frmula mucho ms abajo.

En C2:

=SI.ERROR(INDICE($B$2:$B$200;G2);"") [Extendemos la frmula hasta la fila 30]

Cada vez que pulsemos el botn, Excel devolver una nueva lista. Si aadimos nuevos nombres, sern
incorporados a la lista aleatoria en la prxima pulsacin. Naturalmente, tambin podemos eliminar nombres.

En apariencia, la columna G es superflua. Podramos haber diseado la macro de manera que generara nmeros
aleatorios no repetidos comprendidos entre 1 y el valor de la celda E2. De ese modo, conseguiramos directamente
en la columna F una lista aleatoria similar a la que hemos obtenido en la columna G.

La macro sera sta:

Instructora: America Sabalu S 17


FUNCIONES DEBASE DE DATOS EXCEL 2013

Tambin habra que modificar ligeramente la frmula de C2:

En C2:

=SI(F2<>"";INDICE($B$2:$B$200;F2);"")

La hoja quedara de este as:

Instructora: America Sabalu S 18


FUNCIONES DEBASE DE DATOS EXCEL 2013

Si esta macro resuelve el problema con una columna auxiliar menos, no sera lgico utilizarla y descartar la
anterior?

La verdad es que la ltima macro puede dar problemas cuando la lista tiene muchos nombres. Supongamos que la
lista tiene 1.000 nombres. El bucle Do While... Loop debe generar 1.000 nmeros al azar comprendidos entre 1 y
1.000, todos diferentes y guardarlos en la matriz nmero(). Se comprende que muchas veces el
nmero generado ya exista y, en consecuencia, tendr que descartarlo y volver a generar otro. Sin embargo, si le
damos la opcin de generar 1.000 nmeros elegidos entre un abanico de nmeros muchsimo mayor (por ejemplo,
entre 1 y 100.000), la posibilidad de que un nmero generado no haya salido anteriormente ser mucho mayor y
los descartes sern, en consecuencia, mucho menores. El tiempo de ejecucin de la macro disminuir en la misma
proporcin. Por si esto no fuera suficiente, la segunda macro se cuelga cuando se trabaja con listas grandes.

La conclusin es clara: si no quieres problemas, usa la primera macro.

Qu ocurre si en la lista hay nombres repetidos? Nada raro. Cualquiera de las dos macros genera nmeros
diferentes, por lo que la funcin INDICE apuntar siempre a filas distintas. A esta funcin no le importa lo que haya
escrito en una celda; simplemente, lo lee y lo copia en la columna C.

Instructora: America Sabalu S 19


FUNCIONES DEBASE DE DATOS EXCEL 2013

Pantalla de Excel Macros

2. Ejecucin de
la Macro

1. Configuraci
n de Macros

Instructora: America Sabalu S 20


FUNCIONES DEBASE DE DATOS EXCEL 2013

Private Sub cmdPc_Click()


imgPc.Left = 132
imgLaptop.Visible = False
imgPc.Visible = True
lblprecio = "1200"
End Sub

Private Sub cmdCalcular_Click()


lblImporte.Caption = Val(txtCantidad.Text) * Val(lblprecio)
End Sub

Private Sub cmdCierre_Click()


Unload Me
End Sub

Private Sub cmdSeguir_Click()


txtCantidad.Text = Empty
txtCliente.Text = Empty
lblImporte.Caption = Empty
lblprecio.Caption = Empty
txtCliente.SetFocus
End Sub

Private Sub cmdLaptop_Click()


imgLaptop.Top = 6
imgLaptop.Left = 132
imgPc.Visible = False
imgLaptop.Visible = True
lblprecio = "2500"
End Sub

Private Sub cmdEnunciado_Click()

Instructora: America Sabalu S 21


FUNCIONES DEBASE DE DATOS EXCEL 2013

msje1 = "Se debe seleccionar la Pc a Vender haciendo clic en el botn Respectivo" &
vbCrLf
msje2 = "Escribir el nombre del cliente y la cantidad de Pcs a Vender" & vbCrLf
msje3 = "Al hacer clic en Calcular se muestra el importe de las Pc vendidas" & vbCrLf
msje4 = "Al hacer clic en Cierre cierra el formulario" & vbCrLf
msje5 = "[Emplear las propiedades: Visible, Height, Width, Left y Top]"
msje = msje1 & msje2 & msje3 & msje4 & msje5
MsgBox msje, vbInformation, "Instrucciones"
End Sub

Private Sub Form_Load()


frmPcs.Height = 3360
frmPcs.Width = 3980

Instructora: America Sabalu S 22