Saltar al contenido

Consulta... distribución de valor a varios niveles jerarquicos


Recommended Posts

publicado

Estimados amigos, una consulta, estoy bloqueado y no se como hacer un archivo, necesito sus consejos para hacer este archivo que distribuya:

Tengo valores totales al nivel NIVEL 1.1 y al NIVEL 1.1.1.1, Necesito hacer una distribución a los otros niveles de acuerdo a porcentajes variables del nivel NIVEL 1.1.1, tomando en cuenta que la cantidad de items no es constante desde el NIVEL 1.1.

CONSULTA:

1. Debo tener una tabla de porcentajes de distribución para todos los niveles?

2. Debo tener una tabla que indique cuantos items existen por cada nivel para hace la distribución total?

3. Se puede hacer una macro que indique cuantos items existen por niveles y que sea variable

4. Puede una macro distribuir un valor desde el segundo nivel hacia todos los niveles inferiores o viceversa?

Por favor sus consejos sobre este tema.

Saludos

Distribución.zip

publicado

No hay ningún problema en hacer macros para repartir, el problema principal es que no he acabado de entender de que datos partimos y que datos hay que obtener.

Por otro lado la hoja "NIVELES" es muy bonita pero su estructura supone un serio problema.

Te dejo la hoja "CUENTAS", se trata de la adaptación de la hoja "NIVELES" a un formato mas tratable.

A ver si me aclaras un poco mas el tema.

Copia de Distribución.zip

publicado

Hola Amigo, muchas gracias por tu respuesta, mire la hoja CUENTAS y esta mejor para usarla.

La pregunta es la siguiente: Como se puede distribuir un valor X de acuerdo a la hoja parametros de ditribución.

Ejemplo: Como primer paso de distribución

Si tengo un valor de 1000 USD como Gran total, donde:

el Negocio 31 corresponde al 73%

el Negocio 32 corresponde al 27%

Y dentro de cada Negocio se divide en varias Lineas. Un problema es que puede aumentar el numero de Negocios y Lineas, ademas que no siempre tendran igual numero de items en cada necio o lineas.

Como segundo paso de distribución:

Una vez obtenido la distribución por LINEAS, se debe hacer otra distribución de acuerdo a los siguientes niveles: Posición -> Centro Costo -> Cuenta. De igual forma la cantidad de items de Posicion, Centro Costo y Cuenta no siempre sera igual, ademas que se pueden aumentar o disminuir. CREO que para hacer esta distribución necesitaría otra tabla con porcentajes, verdad?

Y como tercer paso de distribución: tendría que hacer una distribución MENSUAL desde el nivel mas bajo.

Espero haberme explicado, quisiera ver algo mas dinamico porque para hacer lo que quiero significa hacer muchas hojas con muchos calculos, vinculos y hojas, ademas que se hace un archivo muy grande y pesado.

Trate de hacer una macro que me pida primero el numero de negocio, lineas, posiciones, etc, pero no me funciono y ademas como te mencione no siempre son la misma cantidad de items...

Espero que me puedas dar una luz en este largo camino...

Muchas gracias por tus respuestas.

publicado

Bueno, debo ser muy torpe porqué no lo veo.

Los porcentajes de Negocio y Línea están claros, pero los porcentajes a nivel Posición no lo están ya que deberían estar informados a nivel Línea, y lo están a nivel Negocio.

Entiendo que los porcentajes son informados y calculados de forma manual.

¿ Vas a informar todos los porcentajes hasta el nivel Cuenta o hay otro criterio de reparto, por ejemplo el Nº de Cuentas en cada Centro de Costo, o el Nº de Centros de Costo que hay en cada Posición ?

Por otro lado, ¿ El importe a repartir es un Gran Total anual ?

En fin, yo creo que sería conveniente que pusieras un pequeño ejemplo resuelto, indicando claramente lo que se informa, lo que debe calcularse y como.

Te adjunto de nuevo el archivo al que le he añadido el calculo del número de elementos por cada nivel, no se si va a servir para algo o no. Pulsa sobre la forma "CALCULAR NIVELES".

Copia de Distribución II.zip

publicado

Gracias amigo, me saco una sonrisa que te refieras a ti como torpe... por si fuese asi... imaginate que seria yo.... jajajaja.

viendo tus comentarios, si debería haber un porcentajes hasta el nivel de cuenta para asi hacer la distribución, quisiera que fuera de dos formas, con porcentajes hasta el nivel cuenta o solo con un criterio de reparto para los niveles mas bajos.

El Importe a repartir si es un valor anual que hay que repartir, ademas de todos los niveles, hay que hacerlo mensualmente.

Voy a hacer un pequeño ejemplo, tratando de que sea lo mas simple y facil de entender, porque los archivos que tengo actualmente son enormes, pesados e incluso yo mismo me complico para entenderlos... jajajaja, (son archivos que herede de otra persona, por eso pense que seria mejor empezar de cero).

Muchas gracias por tu respuesta, en cuanto adjunte tu archivo te molesto nuevamente.

Archivado

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

  • 109 ¿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
      187
    • Comentarios
      97
    • Revisiones
      29

    Más información sobre "Un juego del Rabino en Excel"
    Última descarga
    Por pegones1

    2    1

  • Crear macros Excel

  • Mensajes

    • Que tal nuevamente,  adjunto una solución alternativa: =MAX(A:.A)-BYROW(F4:.AK20,LAMBDA(r,BUSCAR(2,1/(r=0),F3:.AK3))) Cabe mencionar que esta solución requiere funciones nuevas como RECORTAR.RANGO. CONTADOR FINAL (Solucion).xlsb
    • Buenos días,  espero se encuentren bien de salud compañeros, Favor me podrían ayuda con lo siguientes como se podría hacer cuando tengo una tabla dinámica que  amedida que se aumente las columnas fechas con data un formula que se coloco al final busque o analice siempre la ultima fila y columna de la fecha. Coloco un ejemplo
    • @JSDJSD Excelentes, GRACIAS POR TU SOPORTE , me ayudo demasiado es exactamente lo que quería. 5 ESTRELLAS
    • 'Opción 1 Sub FiltrarSKUPorFecha(): Application.ScreenUpdating = False Dim ultimaFila As Long, fila As Long Dim diccionarioSKU As Object Dim listaEliminar As Object Dim fechaActual As String, fechaSiguiente As String Dim f As Variant With Sheets("Consolidado") ultimaFila = .Cells(.Rows.Count, 1).End(xlUp).Row ' Crear diccionarios para comparar SKU y almacenar filas a eliminar Set diccionarioSKU = CreateObject("Scripting.Dictionary") Set listaEliminar = CreateObject("Scripting.Dictionary") ' Recorrer desde la primera fila hasta la penúltima For fila = 2 To ultimaFila - 1 fechaActual = .Cells(fila, 1).Value fechaSiguiente = .Cells(fila + 1, 1).Value ' Solo comparar la fecha actual con la siguiente (inmediatamente superior) If fechaActual <> fechaSiguiente Then diccionarioSKU.RemoveAll ' Limpiar el diccionario antes de llenarlo ' Guardar los SKU de la fecha siguiente (solo de la siguiente) For f = fila + 1 To ultimaFila If .Cells(f, 1).Value <> fechaSiguiente Then Exit For diccionarioSKU(.Cells(f, 2).Value) = 1 Next f ' Revisar los SKU de la fecha actual y marcar los que deben eliminarse For f = fila To 2 Step -1 If .Cells(f, 1).Value <> fechaActual Then Exit For ' Solo eliminar si el SKU no está en la fecha siguiente If Not diccionarioSKU.exists(.Cells(f, 2).Value) Then listaEliminar(f) = 1 ' Marcar fila para eliminar después End If Next f ' Ya no es necesario seguir buscando después de comparar la primera y la siguiente fecha Exit For End If Next fila ' Eliminar las filas marcadas sin afectar el bucle principal For Each f In listaEliminar.keys .Rows(f).Delete Next End With MsgBox "Completado correctamente.", vbInformation End Sub 'Opción 2 Sub FiltrarSKUPorFecha1(): Application.ScreenUpdating = False Dim ultimaFila As Long, fila As Long Dim listaEliminar As Collection Dim fechaActual As String, fechaSiguiente As String Dim f As Variant, i As Long Dim SKUExiste As Boolean With Sheets("Consolidado") ultimaFila = .Cells(.Rows.Count, 1).End(xlUp).Row ' Inicializar la colección para marcar las filas a eliminar Set listaEliminar = New Collection ' Recorrer desde la primera fila hasta la penúltima For fila = 2 To ultimaFila - 1 fechaActual = .Cells(fila, 1).Value fechaSiguiente = .Cells(fila + 1, 1).Value ' Solo comparar la fecha actual con la siguiente (inmediatamente superior) If fechaActual <> fechaSiguiente Then ' Revisar los SKU de la fecha actual y marcar los que deben eliminarse For f = fila To 2 Step -1 If .Cells(f, 1).Value <> fechaActual Then Exit For ' Comprobar si el SKU está en la fecha siguiente SKUExiste = False For i = fila + 1 To ultimaFila If .Cells(i, 1).Value <> fechaSiguiente Then Exit For If .Cells(i, 2).Value = .Cells(f, 2).Value Then SKUExiste = True Exit For End If Next i ' Si el SKU no se encuentra en la fecha siguiente, marcar para eliminar If Not SKUExiste Then listaEliminar.Add f ' Marcar fila para eliminar después End If Next f ' Ya no es necesario seguir buscando después de comparar la primera y la siguiente fecha Exit For End If Next fila ' Eliminar las filas marcadas sin afectar el bucle principal For Each f In listaEliminar .Rows(f).Delete Next f End With MsgBox "Completado correctamente.", vbInformation End Sub   TABLA ELIMINAR.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.