Todoexpertos.com
http://www.todoexpertos.com
La respuesta está en Internet
Información de la pregunta
Título: Asignacion de Personas a Centros por Codigo Postal
Experto: csarxex
Valoración: 5
Fecha: 30/06/2008


Asignacion de Personas a Centros por Codigo Postal
Tengo que distribuir un determinado número de Personas (por ejemplo 1000) de forma individual entre una serie de Centros, en función de sus respectivos Códigos Postales. El número de Personas y Centros por Código Postal no siempre va a ser el mismo y la distribución debe de ser lo mas equilibrada posible entre los Centros ubicados en un mismo Código Postal. Sin embargo pueden ser muy dispares el número de Personas por Centro de un Código Postal y otro. Por ejemplo: En el Código 28001 tengo 100 Personas y 3 Centros (C1, C2 y C3), con lo cual a C1 y a C2 lo tocarían 33 Personas a cada uno y al C3 34 Personas. En el Código 28002 tengo 200 Personas y 2 Centros (C4 y C5), con lo cual le tocarían 100 Personas a cada uno de los Centros. Y por ultimo en el Código Postal 28003 tengo 700 Personas y 3 Centros (C6, C7 y C8) con lo cual C6 y C7 tienen 233 Personas y el C8  234 Personas. Trabajo con 2 Hojas: una de Personas, Códigos Postales y Centro (esta columna es la que tengo que llenar con el nombre del Centro) y otra de Centros y Códigos Postales. "Hoja Personas" PERSONAS     CPOSTAL    CENTRO Persona1       28001 Persona2       28001 ... Persona201   28002 .... Persona1000 28003 "Hoja Centros" CENTROS       CPOSTAL Centro1         28001 Centro2         28001 ... Centro8         28003 Necesito poner en la columna Centro de la Hoja Personas el Centro asignado. No sé si será posible hacer lo que necesito de una forma un poco automatica, ya que hasta ahora lo vengo haciendo de una forma manual. Gracias por anticipado.

Asignacion de Personas a Centros por Codigo Postal
Suponiendo que los nombres verdaderos de los centros no son los mostrados -Centro1, Centro2, ...- ¿Podemos darle una identificación secuencial a esos centros en la hoja Centros? Algi así como: ID  CENTROS CPOSTAL 1   Centro1   28001 2   Centro2   28001 ... 8   Centro8   28003 de esta forma seria mas facil

Asignacion de Personas a Centros por Codigo Postal
muentras tanto te sugiero lo siguiente Crear una hoja para los datos deducidos necesarios algo como lo siguiente cpostal CantPersonas CantCentros aCadaCentro masXtra 28001 100                           3              33                   1 28002 200                           2             100                  0 28003 700                           3              233                 1 28004   54                           3              18                   0 28005     0                           1               0                    0 y luego en la hoja Personas incluir una columna D para calcular el ordinal del centro que corresponde a cada fila primer centro de la hoja Centros : 1 segundo centro de la hoja Centros :2 etc este valor se puede calcular con =SI(RESIDUO(CONTAR.SI($B$2:B2;B2);BUSCARV(B2;datos;4;0))=1;SI(CONTAR.SI($B$2:B2;B2) Luego la columna CENTROS la consigues con =DESREF(Centros.$A$2;D2-1;0) (me equivoqué, y estuve trabajando con otra hoja de cálculo -OOCalc- y no lo hice en excel, pero todas las funciones de uno deben existir en el otro, espero que sean idénticas las fórmulas; en caso contrario deben haber su equivalente con otro nombre)

Asignacion de Personas a Centros por Codigo Postal
Hola csarxex Ante todo muchas gracias por tu respuesta. Creo haber hecho bien todo lo que me dices - creé columna Id en CENTROS - creé hoja DATOS con las 5 columnas que me indicas - incluí columna D en hoja PERSONAS. El problema lo tengo en esta columna D con la formula =SI(RESIDUO(CONTAR.SI($B$2:B2;B2);BUSCARV(B2;datos;4;0))=1;SI(CONTAR.SI($B$2:B2;B2)    me dice que le falta un parentesis de apertura o de cierre, puse uno al final y me sigue dando error. En cuanto a la funcion DESREF, para adaptarla a excel creo que tendré qeu sustituir el "centros.$a$2" por "centros!$a$2" es decir : =DESREF(centros!$A$2;D2-1;0) Gracias de nuevo por tu inestimable ayuda marca54

Asignacion de Personas a Centros por Codigo Postal
lo hice en excel y me quedó lo siguiente: tuve cambiar el titulo de la columna D porque excel da error al sumarle 1 a un texto le puse un 0 (cero) en lugar del titulo colA         colB     colC    colD Persona cpostal centro 0 Fila1 colA: Persona1 colB: 28001 colC: =desref(Centros!$A$2,D2-1,0) colD: si(residuo(contar.si($B$2:B2,B2),buscarv(b2,datos,4,0))=1,si(contar.si($b$2:b2,b2)
cpostal CantPersonas CantCentros aCadaCentro masXtra
28001 =CONTAR.SI(Personas!B1:B1055,A2) =CONTAR.SI(Centros!B1:B13,A2) =ENTERO(B2/C2) =RESIDUO(B2,C2)
28002 =CONTAR.SI(Personas!B2:B1055,A3) =CONTAR.SI(Centros!B2:B14,A3) =ENTERO(B3/C3) =RESIDUO(B3,C3)
28003 =CONTAR.SI(Personas!B3:B1056,A4) =CONTAR.SI(Centros!B3:B15,A4) =ENTERO(B4/C4) =RESIDUO(B4,C4)
28004 =CONTAR.SI(Personas!B4:B1057,A5) =CONTAR.SI(Centros!B4:B16,A5) =ENTERO(B5/C5) =RESIDUO(B5,C5)
28005 =CONTAR.SI(Personas!B5:B1058,A6) =CONTAR.SI(Centros!B5:B17,A6) =ENTERO(B6/C6) =RESIDUO(B6,C6)
28006 =CONTAR.SI(Personas!B6:B1059,A7) =CONTAR.SI(Centros!B6:B18,A7) =ENTERO(B7/C7) =RESIDUO(B7,C7)
28007 =CONTAR.SI(Personas!B7:B1060,A8) =CONTAR.SI(Centros!B7:B19,A8) =ENTERO(B8/C8) =RESIDUO(B8,C8)
28008 =CONTAR.SI(Personas!B8:B1061,A9) =CONTAR.SI(Centros!B8:B20,A9) =ENTERO(B9/C9) =RESIDUO(B9,C9)
28009 =CONTAR.SI(Personas!B9:B1062,A10) =CONTAR.SI(Centros!B9:B21,A10) =ENTERO(B10/C10) =RESIDUO(B10,C10)
         
         
         
cpostal CantPersonas CantCentros aCadaCentro masXtra
28001 100 3 33 1
28002 200 2 100 0
28003 700 3 233 1
28004 54 3 18 0
28005 0 1 0 0
28006 0 1 0 0
28007 0 1 0 0
28008 0 1 0 0
28009 0 1 0 0

Pregunta finalizada. Valoración: 5
pefecto, ahora pienso qeu si voy a poder solucionar mi problema. Muchisimas gracias por tu interes y atención


Volver al mensaje
http://www.todoexpertos.com/categorias/tecnologia-e-internet/software-y-aplicaciones/microsoft-excel/respuestas/1870827/asignacion-de-personas-a-centros-por-codigo-postal