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.

  • 97 ¿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

    • Hola buenas, Os presento mis dudas. Tengo un libro  (llamémosle LibroDestino) con dos módulos, uno de definición de variables "ModDef" y otro de inicializacion de esas mismas variables "ModCfg". Necesito que al copiarme una hoja de otro libro(llamémosle LibroOrigen), mediante un procedimiento, sobrescribir el modulo de inicialización de variables del LibroDestino con el  contenido del módulo que hay en el LibroOrigen. Destacar que los dos módulos de cada libro tienen el mismo nombre "ModCfg". Y tienen una única variable llamada "Mensaje". En el LibroDestino tiene el valor "Hola" y en el LibroOrigen el valor "Adiós" Este procedimiento lo realiza perfectamente,  es decir se sobrescribe, pero si en el mismo procedimiento quiero utilizar el nuevo valor de esa variable, me conserva el valor de la variable anterior. Para hacer las comprobaciones he ejecutado un MsgBox al empezar y al acabar el procedimiento, pero en los dos casos me devuelve el valor original del LibroDestino el valor "Hola", cuando mi idea es que al sobrescribir el modulo con el nuevo valor de la variable, el último MsgBox me devuelva el valor "Adios". Mi objetivo es poder tener la inicialización de esas variables en un libro que no sea el de trabajo (LibroDestino), ya que según la hoja que importe puedo requerir que las variables tengan un valor u otro. ¿Por que no me coge en el procedimiento el nuevo valor de la variable? ¿Cómo podría conseguirlo? He tenido que activar en VBA  la referencia Microsoft visual basic for applications extensibility 5.3 desde  Herramientas -> Referencias. Creo que es la única manera de poder trabajar con los módulos desde VBA, aunque si se pudiera de otra manera creo que sería mas óptimo. Mil gracias de antemano, un saludo!         Libro1_Prueba.xlsm Libro2_Prueba.xlsm
    • Agradecido Antoni! Tus sugerencias me ayudaron mucho! Como pudiese hacerte llegar el archivo?
    • Prueba este código. Sin el archivo no te puedo ajustar más. Private Sub btnCargaBancos_Click() 'El tipo de dato debe especificase para cada variable Dim TasaCompra As Double, TasaVenta As Double, InvBanesco As Double, InvVzla As Double Dim MontoBanesco As Double, MontoVzla As Double, TasaDiaBan As Double, TasaDiaVzla As Double Dim TasaActual As Double 'Hay que comprobar que los textbox tienen contenido numérico 'Los datos numéricos solo pueden contener números y el separador decimal, cualquier otro caracter dará error al convertir If Not IsNumeric(txtInverBanesco) Or _ Not IsNumeric(txtInverVzla) Or _ Not IsNumeric(txtTasaCompra) Or _ Not IsNumeric(txtTasaVenta) Then MsgBox "Los datos deben ser numéricos", vbCritical Exit Sub End If InvBanesco = CDbl(txtInverBanesco) InvVzla = CDbl(txtInverVzla) TasaCompra = CDbl(txtTasaCompra) TasaVenta = CDbl(txtTasaVenta) 'Los datos de los divisores no pueden ser 0 (Indeterminación matemática) If TasaCompra = 0 Or _ InvBanesco = 0 Or _ InvVzla = 0 Then MsgBox "Los datos no admiten valor cero", vbCritical Exit Sub End If MontoBanesco = (InvBanesco / TasaCompra) * (1 - 0.18 / 100) * (TasaVenta * (1 - 0.18 / 100)) MontoVzla = (InvVzla / TasaCompra) * (1 - 0.18 / 100) * (TasaVenta * (1 - 0.18 / 100)) TasaDiaBan = (MontoBanesco / InvBanesco) * (1 - 0.055) TasaDiaVzla = (MontoVzla / InvVzla) * (1 - 0.055) If TasaDiaBan < TasaDiaVzla Then TasaActual = TasaDiaBan Else TasaActual = TasaDiaVzla End If 'En VBA, los datos numéricos no admiten ser formateados, formatear directamente en las celdas, 'MontoBanesco = FormatNumber(MontoBanesco, 2, True, vbFalse) 'MontoVzla = FormatNumber(MontoVzla, 2, True, vbFalse) 'TasaActual = FormatNumber(TasaActual, 5, True, False) txtBcoBanesco = MontoBanesco txtBcoVenezuela = MontoVzla txtTasaDiaria = TasaActual End Sub  
    • Hola a ambos, @MarianoCruz, si con la respuesta de @Israel Cassales ya tienes resuelto el problema, perfecto. Punto final y a otra cosa. Pero piensa que tu archivo lleva vínculos externos, así que se hace difícil (prácticamente imposible) comprobar si las propuestas dadas ofrecen el resultado esperado. A tal efecto, te sugiero que vuelvas a subir otro archivo, esta vez insertando nuevas hojas que contengan los datos existentes en esos archivos externos.  Tal vez así se vea claro qué es lo que buscas conseguir, y se puedan hacer pruebas que verifiquen la bondad de el/los resultado/s. Tampoco iría mal que insertaras a mano qué resultado debe aparecer en la celda C3 en cada uno de los 3 casos: cuando se inserte 'XI', 'XL' o unos u otros números en los lugares apropiados. Así iremos totalmente sobre seguro acerca del método a emplear. Saludos,
    • Hi Trate de ver que hacían las fórmulas en cuestión pero a su libro le falta o le faltan hojas, por lo que solo podría participar con un par de ideas en general. Lo que entiendo es que según el valor de B3 en C3 debe poner una fórmula u otra, así que es posible que si combina DIRECCION() con INDIRECTO() pueda intercambiar de una fórmula a otra. =SI(B3="Xl",INDIRECTO(DIRECCION(3,5)),SI(O(B3=1,B3=2,B3=3),INDIRECTO(DIRECCION(4,5)),"")) Otra forma sería poner nombre a esas fórmulas en el cuadro de nombres para que las pueda mandar llamar a una o a la otra según el resultado de B3. Por favor tome en cuenta, es solo una idea.
  • 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.