martes, 6 de septiembre de 2011

Un ejemplo de la función FILAS(rango) en Excel.

Usaremos en esta ocasión la función FILAS(rango), anidándola en otras funciones y combinando su uso con la herramienta Tablas o Listas.
Como ejemplo desarrollaré un problema planteado por un usuario:

...Se trata de un fichero con datos de posibles clientes que tengo que repartir entre varios comerciales, conforme a sus objetivos, y una vez repartido el fichero copiar los datos de cada uno en una hoja aparte para enviárselo.
Por ejemplo:
Fichero Datos: 5000 registros de clientes con campos:
nombre, domicilio, localidad, provincia.

5 comerciales con 3 campos cada uno:
número, nombre, código

Como cada comercial tiene un objetivo, le asigno un número de clientes (varía cada mes):
Ejem: El 1 1500
2 1000
3 750
4 1250
5 500

Lo que hago y necesito automatizar, ya que se van a ampliar tanto los registros (pueden ser 35000 registros) y los comerciales (entre 25 y 30):

En el fichero Datos inserto al principio 3 columnas con los tres campos que corresponden a cada comercial y pongo los 1500 primeros con los datos del 1, del 1501 al 2500 con los del 2….

Cuando ya los tengo todos repartidos, filtro por comercial y copio y pego las filas con datos de cada uno de ellos en una hoja separada para cada uno de ellos; tanto en el fichero Datos como en los de cada comercial la fila 1 es la cabecera (igual para ambos), es decir copio desde la 2 hasta el último registro que tiene asignado....


Nuestros orígenes de datos serán entonces:


haz click en la imagen


Cada origen de datos se encuentra en una hoja diferente de nuestro Libro de trabajo, de izquierda a derecha, Hoja 'objetivos', Hoja 'comerciales' y Hoja 'clientes'.
Nuestra primera labor consiste en crear, para cada una de ellas, una Tabla o Lista; para lo que seleccionamos los diferentes rangos y presionando Ctrl+q los convertiremos en Tablas... con todas las funcionalidades de éstas (ver). Nuestras tres tablas son entonces:
Tabla 'Clientes': Hoja 'clientes' y rango A1:D31
Tabla 'Comerciales': Hoja 'comerciales' y rango A1:C8
Tabla 'Objetivos': Hoja 'objetivos' y rango A1:B8
¿Por qué hemos creado estas tablas?, bueno, el fin es que cualquier variación en alguna de estas Tablas se adapte y autorrellene en los campos nuevos que vamos a incluir, así como que las interrelaciones entre las tres Tablas tengan un componente 'dinámico'.

Siguiendo las indicaciones de nuestro lector, el siguiente paso a desarrollar consistirá en añadir una nueva columna o campo a la Tabla Objetivos con la siguiente fórmula:
=SI(FILA()=2;0;C1+A1)
esta fórmula aportará sencillamente un acumulado del número de clientes para cada Comercial de la empresa. Se trata de repartir el número total de clientes existente en la primera de las Tablas 'Clientes' entre los diferentes comerciales. Con el campo generado lo desplazaremos y colocaremos a la izquierda, o como primera columna.
Quedará así:


Este paso recién realizado es la clave de todo el desarrollo, por tanto conviene verificar el resultado obtenido en la columna añadida.

Nos marchamos ahora a la Tabla 'Clientes', para proceder al reparto del número de clientes a cada comercial. Siguiendo las indicaciones dadas, el reparto consitirá en asignar (ver Tabla 'Objetivos') al comercial número 1 los 3 primeros clientes, al comercial 2 los 6 clientes siguientes, y sucesivamente...
Para ello anidaremos la función FILAS(rango) dentro de una función BUSCARV, la fórmula final quedará:
=BUSCARV(FILAS($A$2:A2)-1;Objetivos[[Columna1]:[comercial]];2;1)
la gran ventaja de trabajar con Tablas es que no nos preocuparemos de que haya más o menos registros en las diferentes Tablas, ya que la formulación trabaja sobre los campos de éstas.
Fijémosnos en la fúnción:
buscamos un valor, obtenido de la función FILAS($A$2:A2)-1 que para registro devolverá un valor entre 0 y 29 para nuestro ejemplo, y el resultado es buscado en la matriz que se obtiene de los campos 'Columna1' y 'comercial' de la Tabla Objetivos; al tratarse de una búsqueda vertical por aproximación (ver ejemplo) los resultado obtenidos, esto es, los códigos de los comerciales serán los deseados.


Para terminar con el ejercicio, añadiremos dos columnas nuevas a la Tabla 'Cliente': NombreComercial y CodComercial
con las siguientes fórmulas:
NombreComercial =BUSCARV(Clientes[[#Esta fila];[Columna1]];Comerciales[#Todo];2;0)
CodComercial =BUSCARV(Clientes[[#Esta fila];[Columna1]];Comerciales[#Todo];3;0)
donde buscamos el valor recién calculado, que corresponde al código del Comercial, para obtener, de la Tabla 'Comerciales', su Nombre y Código.

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.