Saltar al contenido

imputar costes según %


Recommended Posts

Hola, 

gracias por siquiera leerlo. A ver si consigo seguir, que me estoy volviendo loco. Aunque parece una simple fórmula, es algo más complicado, creo.

version 2013 España

A grandes rasgos (especifico en el archivo), necesito separar el coste de un trabajador por centro de trabajo dependiendo de las ventas del centro, sabiendo que hay trabajadores que trabajan en varios centros y que quede de tal forma (separado por columnas) que me permita trabajar mas tarde en tabla dinamica con toda la info. y sabiendo también que el ejemplo es de 6 trabajadores pero esta muy muy simplificado y necesito automatizar el máximo posible del calculo

Tengo los datos: trabajdor, centro o centros donde se imputaría el coste y kilos vendidos por trabajador

Quiero obtener mediante automatismo (formula o macro): 

1. kilos vendidos en cada centro (no lo quiero en la tabla porque es una info que sacaré despues en tabla dinamica)

2. con los kilos vendidos en cada centro, obtener que porcentaje del ``coste personal´´ imputable a cada uno de los centros donde trabaja. SI es deseable que aparezca en una columna, auque no primordial. debe ser automatico y extraer la info de muchas celdas distintas dispersas. es decir, si trabaja en A+B, sumar todas ventas de aquella flila con ventas en A o en B. 

3. separar por columnas costes definitivos por cantidades y centros desglosados. 

Agradecería muchisimo su colaboración. 

Salut!

 

foro.ods

Enlace a comentario
Compartir con otras webs

increible. 

Pero el archivo que mandé era un ejemplo ultrasimplificado. Necesitaria si fuera posible una pequeña explicacion para saber como aplicar y modificar el codigo para un caso real con 500 filas y trabajadores que trabajan en no solo 2 centros sino 3,4,5....  

exactamente necesitaria poder hacer A+B+C+.... hasta un máximo de 15. me explico?  

Aún así muchisimas gracias. Eres un artista

Enlace a comentario
Compartir con otras webs

checa este ejemplo, es para 11 centros y 26 trabajadores, la macro tiene una instruccion que la macro trabaja en funcion de las filas y columnas que existan en la hoja, solo añade filas y columnas y listo, en cuanto a la programacion en la unica macro que tienes que modificar es la macro llamada 3 parte, hay añades lineas adicionales por cada centro que añadas, en la lista ya tienes 11 con eso puedes darte una idea de que tienes que añadirle a la macro.

foro.xlsm

Enlace a comentario
Compartir con otras webs

Hola, 

no consigo usar el codigo sin que me lance error 91 y en depurar celda= busar.adress. necesito cambiar el nombre de los centros. No se llama A, ni B, ni C.... supongamos que se llaman, por ejemplo: 

A=frutería

B=Almacen

C=oficina

etc...

me puedes ayudar? como toqueteo el codigo para modificar el texto en la tabla sin cargarmelo?

gracias por todo!

Enlace a comentario
Compartir con otras webs

dos cosas sube un ejemplo del archivo real se me hace que la macro es mas facil de hacer con datos reales que a como lo planteaste en el ejemplo, dos si puedes sube una pantalla del error si mal no recuerdo eso error pasa cuando no encuentra el dato que busca.

Enlace a comentario
Compartir con otras webs

Hola, 

realmente no tengo el ejemplo real. Primero estoy decidiendo como estructurarlo, dependiendo de como consiga imputar los costes. La verdad es que con la ultima macro que mandaste estaba casi listo. lo unico que necesito es saber como modificar el codigo para cambiar los nombres de los centros puesto que no se van a llamar A B C D ... te paso algo aproximado al caso real. 

 imp costes.ods

PNTLL.png

Enlace a comentario
Compartir con otras webs

PSDM50 es una clave de identificacion, yo queria mas ejemplos pero basado en el que pusiste en el codigo cree unos propios para solucionar el problema, ya esta la macro ahora debe funcionar adecuadamente, en el codigo solo necesitas agregar los centros de trabajo donde lo estabas haciendo para que la macro sea funcional para los centros que manejas, en este momento solo funciona para la opcion que diste de alta en el codigo

foro1.xlsm

Enlace a comentario
Compartir con otras webs

Hola dr hyde

te lo habia adjuntado con mas ejemplos, creo que no lo has visto. lo vuelvo a adjuntar. 

no he consiguido modificar el codigo en VBA y obtener resultado alguno con tu ultimo doc adjunto.

que pena que te esté liando tanto cuando estabamos tan cerca. Solo necesito poder modificar el codigo para cambiar el nombre de los centros al gusto y ya estaría.

bless

imp costes.ods

Enlace a comentario
Compartir con otras webs

la macro no va a funcionar porque el archivo que mandaste primero es muy diferente al segundo archivo, tengo que cambiar la programacion para que funcione, por ejemplo en el primer ejemplo incluias una columna de kilos que era la base para el calculo de los porcentajes, en el nuevo archivo esa columna no aparece, entonces supongo que los calculos se haran por el coste de cada centro, adicionaste tambien varias columnas nuevas, preguntas:

1.- sobre que base se van a calcular los porcentajes?

2.- para repartir el costo tienes varios centros solo (filas 98 a 100) aqui se van a cargar el 100% del costo?

3.- tienes varios costos y centros repetidos los quieres incluir en el calculo del porcentaje o quieres que se descarten los repetidos?

Checa la macro funciona de acuerdo a los nuevos parametros de tu estructura, solo da click en el boton calcular

imp costes.xlsm

Enlace a comentario
Compartir con otras webs

Hola dr hyde,

estoy buscando el porcentaje de imputacion del coste del empleado, para mas tarde conocer el coste total de un centro, sabiendo que los trabajadores que prestan servicios para distintos centros reparten su coste según los contratos vendidos (H) en los diversos centros donde trabaja. Por eso los trabajadores que solo trabajan en uno su imputacion es de un 100% al único centro donde trabaja. ejemplo: 

si el 

trabajador78 ago-15 CAMPA SH CRJ60+CPI61

trabaja para CRJ60 Y CPI61, repartimos los 2514 € que cuesta segun % en CPI61 (SUMA contratos totales de CPI61*100/SUMA contratos totales CPI61+CRJ60) y CRJ60 (SUMA contratos totales de CRJ60*100/SUMA contratos totales CPI61+CRJ60)

en el primer ejemplo simplificado hablabamos de kilos de furta vendidos para hacer el reparto de costes y ahora de contratos vendidos.

respondo a tus preguntas:

1-sobre la suma de los contratos vendidos en cada uno de los centros. 

2- exacto. si solo trabaja en un centro, 100% imputa a este centro. 

3- no. ha sido pura coincidencia al meter los datos aleatroiamente. deben incluirse. 

 

la macro funciona en un primer momento, pero hago la prueba de poner 1000000 de contratos vendidos a un trabajador que presta solo a PDM50 y vuelvo a calcular y los porcentajes de lo trabajadores que prestan servicio en PDM50+PDM60+CRJ60.... permanecen invariables. lo mismo modificando el costo. Si que lo hacia en las primeras pruebas y era la verdadera utilidad de esta macro, que por cierto, casi casi casi la tenemos. 
 

por cierto, me equivoqué y en =I1:T1 te debería haber puesto

% CENTRO PDM50 COSTE CENTRO PDM50 % CENTRO PDM60 COSTE CENTRO PDM60 % CENTRO CRJ60 

COSTE CENTRO CRJ60

ETC ETC

gracias miles dr. hyde!

Enlace a comentario
Compartir con otras webs

las columnas donde la macro hace los calculos son la 7 y 8 o bien la G y la H si tus datos reales no estan en esas columnas va a presentar error o simplemente no va a hacer nada, la otra si solo copiaste el boton y no le programaste a esa copia del boton las macros a ejecutar tampoco hara nada, tambien debes copiar las macros a la hoja donde tienes tus datos reales, ya le agrege lo de los centros de costos, en la primera fila cambie el dato a 1,000,000 y la macro si funciona.

imp costes.xlsm

Enlace a comentario
Compartir con otras webs

Hola. que pena pero no me funicona... que cerqita lo teniamos pero nos estamos yendo. te adjunto los errores que me da al tocar las columnas G o H. porcentajes muy locos y un error al ejecutar. 

tampoco me deja calcular sucesivas veces, algo super util cuando se veian modificados los datos. quizá soy yo que no lo estoy haciendo bien, si es así disculpame. 

saludos y mil gracias. eres un mago!

1.png

2.png

Enlace a comentario
Compartir con otras webs

puedes poner una pantalla de los encabezados de tus datos reales, el problema es que no esta creando la tabla de sumas por centro, entra el editor VBA y corre la macro centros_unicos checa si te crea al final de tus datos un resumen de los costos por centro, debe crearte una matriz de 8 columna por 3 filas, hay algo en tu archivo original que no se esta tomando en cuenta por eso por eso quiero ver una pantalla de tus datos reales.

Enlace a comentario
Compartir con otras webs

lo de los porcentajes locos fue porque omiti cambiarle el formato a la columna cuando agrege las columnas con el nombre del centro, eso ya quedo arreglado en el siguiente archivo, este archivo te lo mando con los resultados de la macro, no eliminas ninguna macro cuando digo correr es hacer funcionar la macro, checa esta macro y me dices como te fue

imp costes (1).xlsm

Enlace a comentario
Compartir con otras webs

Hola compañero, 

ahora la estructura esta correcta (tema de los % locos) y reclacula tantas veces como quiera solamente en los centros con un 100% de imputacion a 1 centro. en aquellos que depende de los contratos (H), si modifico cualquiera, por ejemplo H60 a 100000 de contratos, los porcentajes de imputación de, por ejemplo, trabajador 78 (fila 79) no se ven alterados, con lo cual no esta funcionando. 

lo tenias claro pero te lo recuerdo, solo por si se te hubiera olvidado después de tantos dias: IMPUTACION COSTES:  el %de imputación del coste de un trabajador depende del numero de contratos de cada centro donde trabaja. es decir, siguiendo con el ejemplo trabajador 78, si trabajador 78 trabaja para CRJ60 y CPI61, y CRJ90 vende 900 contratos y CPI61 100, el reparto del coste del trabajador 78 es 90% a CRJ60 y 10% a CPI61. 

Muchísimas gracias por tu ayuda.. 

saludos, 

 

Enlace a comentario
Compartir con otras webs

guau! he chekeado y calcula perfecto. muchísimas gracias, eres un capo.

peeero, no me deja añadir mas filas. cuando añado filas a partir de la Fila114 se trastoca todo y falla en los cálculos. puede ser que haya alguna formulación o algo debajo de la tabla y la esté jodiendo? 

Enlace a comentario
Compartir con otras webs

el problema radica en que los registros tienen que estar ordenadas por una serie de combinaciones de centro, costo y contrato para que te pueda realizar bien los calculos, de lo contrario te va a generar error a la hora de agregar nuevos registros, ya inclui esos cambios en el siguiente archivo, para que funcione adecuadamente trabajador debe ser escrito asi trabajador 1 en vez de trabajador1.

imp costes (1).xlsm

Enlace a comentario
Compartir con otras webs

  • 2 weeks later...

Hola!

funciona perfecto para lo que necesito. Espectacular. 

peeeeero, si pudiera pedirte un ultimo favor, sería que pudiera extenderse el calculo a más centros. de 8 que calcula correcto actualmente a 14 que voy a necesitar repartir el calculo en un futuro.

por si pudieras, la nomenclatura de los centros es la siguiente: 

AC50

AC60

AC61

AC69

FUE53

FUE62

FUE64

FUE66

TCI56

TCI57

TCI60

TCI69

LPA54

LPA69

una vez más millones de gracias

 

 

 

Enlace a comentario
Compartir con otras webs

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 96 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      177
    • Comentarios
      90
    • Revisiones
      27

  • Crear macros Excel

  • Mensajes

    • Si  no me he liado con los paréntesis: Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False Application.Calculation = xlManual Application.EnableEvents = False If Not Intersect(Target, Range("$L$5:$Y$9")) Is Nothing Then Range("E22") = WorksheetFunction.Sum(Range("E4:E21")) Range("E23") = WorksheetFunction.Sum(Range("E4:E19")) Range("E24") = Range("E23") - WorksheetFunction.Sum(Range("I4:I7")) Range("I22") = WorksheetFunction.Sum(Range("I4:I21")) Range("I4") = Range("E23") * 0.1 Range("I5") = Range("EN10") * Range("EN11") Range("I6") = Range("E23") * 0.0127 Range("I7") = Range("E23") * 0.006 Range("I25") = Range("E22") - Range("I22") Range("I12") = Range("E24") * 0.03 Range("C7") = Range("EQ8") - Range("EQ9") + Range("EN13") + Range("EN14") + Range("EN15") + Range("EN16") Range("C9") = Range("EQ9") + Range("EN17") + Range("EN18") + Range("EN19") Range("E7") = Range("E4") / Range("C4") * 7 / 44 * 1.5 * Range("C7") Range("E8") = Range("E4") / Range("C4") * 7 / 44 * 0.3 * Range("C8") Range("E9") = Range("E4") / Range("C4") * 7 / 44 * 1.3 * 1.5 * Range("C9") End If Application.Calculation = xlAutomatic Application.ScreenUpdating = True Application.EnableEvents = True End Sub  
    • Hola de nuevo a ambos, @daren, tu archivo lleva excesivos datos, que creo no son necesarios para la información final que buscas. Te subo otro archivo, simplificado al máximo, que, si lo he entendido bien, con esta fórmula simplificada: =CONTAR.SI('Casos de Prueba'!I:I;"OK")*('Casos de Prueba'!I1="Resultados Ciclo "&COLUMNA(A5)) se calcularía el primer dato, que se encuentra en la columna I. Copiando la fórmula a la derecha las celdas que necesites, se completaría el rango.  Tu fórmula la coloco en D7, y esta nueva en D9, que como ves (si, repito, he interpretado bien lo que buscas), da los mismos resultados. ---------------------------------------------------------------- En cuanto a: Aquí tienes, en el mismo archivo (Hoja 3) lo que devuelve tu fórmula cuando hay un determinado dato en A1 y en B2. No llego a entender qué es lo que quieres exactamente.  Tal vez con una pequeña explicación de lo que esperas obtener, sea suficiente para poner el hilo a la aguja. ? ----------------------------------------------------------------- En el caso de que falte por añadir o evaluar alguna otra variable o parámetro (en tu primer post hablabas sólo de 'OK' y ahora veo que en el archivo figuran además 'KO' y 'BLOCK'), por favor, intenta emular el ejemplo del archivo que estoy subiendo; añade EXCLUSIVAMENTE esos datos en la hoja allá donde proceda, explicando dónde o cómo deben contarse o sumarse. Mejor trabajar siempre con datos anónimos y reducidos. Desconozco si en tu archivo alguno de esos datos puede considerarse confidencial, pero seguro que no interesan a nadie. Mucho mejor obviarlos. Saludos, Plantilla V3 (B).xlsx
    • buenas noches, quisiera saber si puedo mejorar mi macros que se encuentra en el evento change de la hoja de calculo de Excel, son códigos de cálculos básicos, además si me pudieran ayudar a reducir el código o darme algún tip para reducirlo yo mismo estaría muy agradecido.  de ante mano muchas gracias     Private Sub Worksheet_Change(ByVal Target As Range)     Application.ScreenUpdating = False     Application.Calculation = xlManual     Application.EnableEvents = False              If Not Intersect(Target, Range("$L$5:$Y$9")) Is Nothing Then             Sub todo()          Range("E22") = WorksheetFunction.Sum(Range("E4:E21"))     Range("E23") = WorksheetFunction.Sum(Range("E4:E19"))     Range("E24") = WorksheetFunction.Sum(Range("E23") - WorksheetFunction.Sum(Range("I4:I7")))     Range("i22") = WorksheetFunction.Sum(Range("I4:I21"))     Range("I4") = Range("E23") * 0.1     Range("I6") = Range("E23") * 0.0127     Range("I5") = Range("EN10") * Range("EN11")     Range("I7") = Range("E23") * 0.006     Range("I25") = Range("E22") - Range("I22")     Range("I12") = Range("E24") * 0.03     Range("C7") = WorksheetFunction.Sum(Range("EQ8") - (Range("EQ9"))) + Range("EN13") + Range("EN14") + Range("EN15") + Range("EN16")     'Range("E7") = WorksheetFunction.Sum(Range("C7") * ((Range("E4") * 0.0077777)))     Range("C9") = Range("EQ9") + Range("EN17") + Range("EN18") + Range("EN19")     'Range("E9") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 45) * 1.3) * 1.5) * Range("C9")     'Range("E8") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 45) * 0.3)) * (Range("C8"))     Range("E9") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 44) * 1.3) * 1.5) * Range("C9")     Range("E8") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 44) * 0.3)) * (Range("C8"))     Range("E7") = WorksheetFunction.Sum((((Range("E4") / Range("C4")) * 7) / 44) * 1.5) * Range("C7")          End Sub              End If                  Application.Calculation = xlAutomatic     Application.ScreenUpdating = True     Application.EnableEvents = True     End Sub
    • Buenas perdonad la espera adjunto el fichero Excel y explico mas detallado lo que me solicitan: Lo que me solicitan es que esos CP de la pestaña Casos de prueba los cuales tienen formulas para que cuando se copien y peguen junto a sus pasos el CP se va autoincrementando a 1,2,3 etc...., pero si copias ese CP bien solo con el primer paso o con todos sus  pasos y lo insertas entre dos CP no continua con la numeración, como se ve en la foto al hacer eso el CP insertado continua con la numeración CP2 y el de abajo pone también CP2 no se incrementa ni ese ni el valor de CU que hay a la derecha que también es incremental. Necesitaría que continuara con esa numeración aun insertándolo entre medio de 2 tanto el CP como el CU de la derecha. También me solicitan que el campo Ciclo 1 de la pestaña Resumen es auto incremental cuando copias y pegas va sumando 1, pero en las formulas referentes a Ok KO Y bloqueo al copiar y pegar se mantiene la misma formula , la idea es que cuando copies y pegues la fila donde están los ciclos se autoincremente Ciclo a 1,2,3,4 etc... y la formula de los campos OK,KO y Bloqueos se incremente también pasando de la columna I a la J  luego a la k etc... y que en Resultados Ciclo el numero de la formula también se incremente Resultados Ciclo 1 , 2 ,3 etc... que cambie la columna a la vez que el numero de Resultados Ciclo. Gracias por adelantado un saludo. Plantilla v3 Pruebas.xlsx  
    • Saludos amigos espero estén bien Estoy intentando hacer un formulario que me convierta unidades de masa sin embargo  en el mejor de los casos solo he podido lograr la conversión de una unidad a la vez en los TextBox 1, 3, 5, 7, 9, 11 y 13 y cuando lo logro el resultado que se copia  en la celda no se corresponde con el obtenido originalmente en el Textbox del Formulario (frmconv)  ejemplo al convertir 1900 Kg a Lb el resultado en el TextBox1 =4188,78298142 sin embargo al guardar el resultado lo que se copia en la Celda  "F11" es  418.878.298.142,00, adicionalmente el resultado de la conversión no se visualiza inmediatamente por lo que debo de hacer click en los TextBox 1, 3, 5, 7, 9, 11 y 13  para ver el resultado. Mucho les sabre agradecer la ayuda que me puedan brindar. PRUEBA.xlsm
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.