URGE, Macro para llenar subniveles de una lista

09/10/2007 - 17:26 por Manny_90 | Informe spam
Que tal.

Me gustaria que me ayudaran a crear un MACRO para llenar celdas con algunas
condiciones, tengo una lista de materiales con tres columnas "Nivel, Padre,
Numero de parte", lo que necesito que haga la macro es llenar la columna de
PADRE depediendo el nivel de la lista de materiales, por ejemplo en la lista
de abajo, El numero de parte 240686-212 es el padre de toda la familia, el
nivel 1 son los hijos del padre (nivel 0), el nivel 2 son los hijos del
subpadre nivel 1, el nivel 3 son los hijos de los subpadre nivel 2, etc. la
lista de materiales puede llegar a tener hasta 6 niveles.

NIVEL PADRE Numero de parte
0 240686-212
1 265766-212
1 622013-212
2 180977-212
1 1C4981-212
2 286922-212
3 452044-212
2 458162-212


El resultado de la tabla seria:

NIVEL PADRE Numero de parte
0 240686-212
1 240686-212 265766-212
1 240686-212 622013-212
2 622013-212 180977-212
1 240686-212 1C4981-212
2 1C4981-212 286922-212
3 286922-212 452044-212
2 1C4981-212 458162-212


Muchas gracias por su ayuda...
Manny_90

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
10/10/2007 - 08:34 | Informe spam
hola, !

si suponemos que tu listado tiene los titulos en la fila 1 y los datos en las columnas A, B y C
es posible que pudieras evitar (o posponer) el uso de macros (depende del numero de filas) -?-

prueba iniciando en la celda [B3] con alguna de las siguientes formulas:
solo toma en cuenta que mi sistema usa como separador de argumentos a la coma ',' NO al punto y coma ';' :D

op1: matricial (ya sabes, al introducirla/editarla se termina con ctrl+mayus+enter)
=si(a3=0,"",indice(c:c,max(fila(a$2:a2)*(a$2:a2£-1))))

op2: no matricial (pero usa una funcion adicional)
=si(a3=0,"",indice(c:c,sumaproducto(max(fila(a$2:a2)*(a$2:a2£-1)))))

si cualquier duda (o informacion adicional... o el re/calculo de tu modelo se vuelve lento... o ???)... comentas ?
saludos,
hector.

__ la consulta original __
Me gustaria que me ayudaran a crear un MACRO para llenar celdas con algunas condiciones
tengo una lista de materiales con tres columnas "Nivel, Padre, Numero de parte"
lo que necesito que haga la macro es llenar la columna de PADRE depediendo el nivel de la lista de materiales
por ejemplo en la lista de abajo, El numero de parte 240686-212 es el padre de toda la familia
el nivel 1 son los hijos del padre (nivel 0), el nivel 2 son los hijos del subpadre nivel 1, el nivel 3 son los hijos de los subpadre nivel 2, etc.
la lista de materiales puede llegar a tener hasta 6 niveles.

NIVEL PADRE Numero de parte
0 240686-212
1 265766-212
1 622013-212
2 180977-212
1 1C4981-212
2 286922-212
3 452044-212
2 458162-212

El resultado de la tabla seria:

NIVEL PADRE Numero de parte
0 240686-212
1 240686-212 265766-212
1 240686-212 622013-212
2 622013-212 180977-212
1 240686-212 1C4981-212
2 1C4981-212 286922-212
3 286922-212 452044-212
2 1C4981-212 458162-212
Respuesta Responder a este mensaje
#2 Manny_90
10/07/2008 - 23:53 | Informe spam
Exelente truco Hector Miguel, y como siempre , eres UN GENIO.!!!

Me gustaria saber si me pudieras explicar de la parte:
SUMPRODUCT(MAX(ROW(B$2:B3)*(B$2:B3³-1))
No entiendo lo que hace el caracter " * ", ya le he buscado y pensado, pero
no logro entenderlo.

Muchas gracias
Manny










"Héctor Miguel" wrote:

hola, !

si suponemos que tu listado tiene los titulos en la fila 1 y los datos en las columnas A, B y C
es posible que pudieras evitar (o posponer) el uso de macros (depende del numero de filas) -?-

prueba iniciando en la celda [B3] con alguna de las siguientes formulas:
solo toma en cuenta que mi sistema usa como separador de argumentos a la coma ',' NO al punto y coma ';' :D

op1: matricial (ya sabes, al introducirla/editarla se termina con ctrl+mayus+enter)
=si(a3=0,"",indice(c:c,max(fila(a$2:a2)*(a$2:a2£-1))))

op2: no matricial (pero usa una funcion adicional)
=si(a3=0,"",indice(c:c,sumaproducto(max(fila(a$2:a2)*(a$2:a2£-1)))))

si cualquier duda (o informacion adicional... o el re/calculo de tu modelo se vuelve lento... o ???)... comentas ?
saludos,
hector.

__ la consulta original __
> Me gustaria que me ayudaran a crear un MACRO para llenar celdas con algunas condiciones
> tengo una lista de materiales con tres columnas "Nivel, Padre, Numero de parte"
> lo que necesito que haga la macro es llenar la columna de PADRE depediendo el nivel de la lista de materiales
> por ejemplo en la lista de abajo, El numero de parte 240686-212 es el padre de toda la familia
> el nivel 1 son los hijos del padre (nivel 0), el nivel 2 son los hijos del subpadre nivel 1, el nivel 3 son los hijos de los subpadre nivel 2, etc.
> la lista de materiales puede llegar a tener hasta 6 niveles.
>
> NIVEL PADRE Numero de parte
> 0 240686-212
> 1 265766-212
> 1 622013-212
> 2 180977-212
> 1 1C4981-212
> 2 286922-212
> 3 452044-212
> 2 458162-212
>
> El resultado de la tabla seria:
>
> NIVEL PADRE Numero de parte
> 0 240686-212
> 1 240686-212 265766-212
> 1 240686-212 622013-212
> 2 622013-212 180977-212
> 1 240686-212 1C4981-212
> 2 1C4981-212 286922-212
> 3 286922-212 452044-212
> 2 1C4981-212 458162-212



Respuesta Responder a este mensaje
#3 Héctor Miguel
11/07/2008 - 00:27 | Informe spam
hola, (...) ?

Me gustaria saber si me pudieras explicar de la parte:
SUMPRODUCT(MAX(ROW(B$2:B3)*(B$2:B3³-1))
No entiendo lo que hace el caracter " * ", ya le he buscado y pensado, pero no logro entenderlo.



ROW(B$2:B3) obtiene el numero de fila (en forma creciente) al avanzar por la columna B (B2, B3, etc.)
*(B$2:B3³-1) "conserva" el numero de fila cuando el contenido de la fila "actual" es igual en la celda B (fila actual) menos 1
MAX(... simplemente encuentra cual es el numero maximo de fila donde se cumple la condicion
SUMPRODUCT(... es para evitar la necesidad de dar un tratamiento a la formula de entrada matricial (ctrl+shift+enter)

saludos,
hector.

p.d. uhmmm !!!... consulta de hace exactamente 9 meses... (habria que celebrar "el nacimiento" ?) :))

__ OP __
si suponemos que tu listado tiene los titulos en la fila 1 y los datos en las columnas A, B y C
es posible que pudieras evitar (o posponer) el uso de macros (depende del numero de filas) -?-

prueba iniciando en la celda [B3] con alguna de las siguientes formulas:
solo toma en cuenta que mi sistema usa como separador de argumentos a la coma ',' NO al punto y coma ';' :D

op1: matricial (ya sabes, al introducirla/editarla se termina con ctrl+mayus+enter)
=si(a3=0,"",indice(c:c,max(fila(a$2:a2)*(a$2:a2£-1))))

op2: no matricial (pero usa una funcion adicional)
=si(a3=0,"",indice(c:c,sumaproducto(max(fila(a$2:a2)*(a$2:a2£-1)))))

si cualquier duda (o informacion adicional... o el re/calculo de tu modelo se vuelve lento... o ???)... comentas ?
saludos,
hector.

__ la consulta original __
Me gustaria que me ayudaran a crear un MACRO para llenar celdas con algunas condiciones
tengo una lista de materiales con tres columnas "Nivel, Padre, Numero de parte"
lo que necesito que haga la macro es llenar la columna de PADRE depediendo el nivel de la lista de materiales
por ejemplo en la lista de abajo, El numero de parte 240686-212 es el padre de toda la familia
el nivel 1 son los hijos del padre (nivel 0), el nivel 2 son los hijos del subpadre nivel 1, el nivel 3 son los hijos de los subpadre nivel 2, etc.
la lista de materiales puede llegar a tener hasta 6 niveles.

NIVEL PADRE Numero de parte
0 240686-212
1 265766-212
1 622013-212
2 180977-212
1 1C4981-212
2 286922-212
3 452044-212
2 458162-212

El resultado de la tabla seria:

NIVEL PADRE Numero de parte
0 240686-212
1 240686-212 265766-212
1 240686-212 622013-212
2 622013-212 180977-212
1 240686-212 1C4981-212
2 1C4981-212 286922-212
3 286922-212 452044-212
2 1C4981-212 458162-212
Respuesta Responder a este mensaje
#4 Manny_90
11/07/2008 - 15:43 | Informe spam
Exelente.

Ya habia utilizado la formula, solo me atore con el " * "

Muchas gracias.







"Héctor Miguel" wrote:

hola, (...) ?

> Me gustaria saber si me pudieras explicar de la parte:
> SUMPRODUCT(MAX(ROW(B$2:B3)*(B$2:B3³-1))
> No entiendo lo que hace el caracter " * ", ya le he buscado y pensado, pero no logro entenderlo.

ROW(B$2:B3) obtiene el numero de fila (en forma creciente) al avanzar por la columna B (B2, B3, etc.)
*(B$2:B3³-1) "conserva" el numero de fila cuando el contenido de la fila "actual" es igual en la celda B (fila actual) menos 1
MAX(... simplemente encuentra cual es el numero maximo de fila donde se cumple la condicion
SUMPRODUCT(... es para evitar la necesidad de dar un tratamiento a la formula de entrada matricial (ctrl+shift+enter)

saludos,
hector.

p.d. uhmmm !!!... consulta de hace exactamente 9 meses... (habria que celebrar "el nacimiento" ?) :))

__ OP __
>> si suponemos que tu listado tiene los titulos en la fila 1 y los datos en las columnas A, B y C
>> es posible que pudieras evitar (o posponer) el uso de macros (depende del numero de filas) -?-
>>
>> prueba iniciando en la celda [B3] con alguna de las siguientes formulas:
>> solo toma en cuenta que mi sistema usa como separador de argumentos a la coma ',' NO al punto y coma ';' :D
>>
>> op1: matricial (ya sabes, al introducirla/editarla se termina con ctrl+mayus+enter)
>> =si(a3=0,"",indice(c:c,max(fila(a$2:a2)*(a$2:a2£-1))))
>>
>> op2: no matricial (pero usa una funcion adicional)
>> =si(a3=0,"",indice(c:c,sumaproducto(max(fila(a$2:a2)*(a$2:a2£-1)))))
>>
>> si cualquier duda (o informacion adicional... o el re/calculo de tu modelo se vuelve lento... o ???)... comentas ?
>> saludos,
>> hector.
>>
>> __ la consulta original __
>>> Me gustaria que me ayudaran a crear un MACRO para llenar celdas con algunas condiciones
>>> tengo una lista de materiales con tres columnas "Nivel, Padre, Numero de parte"
>>> lo que necesito que haga la macro es llenar la columna de PADRE depediendo el nivel de la lista de materiales
>>> por ejemplo en la lista de abajo, El numero de parte 240686-212 es el padre de toda la familia
>>> el nivel 1 son los hijos del padre (nivel 0), el nivel 2 son los hijos del subpadre nivel 1, el nivel 3 son los hijos de los subpadre nivel 2, etc.
>>> la lista de materiales puede llegar a tener hasta 6 niveles.
>>>
>>> NIVEL PADRE Numero de parte
>>> 0 240686-212
>>> 1 265766-212
>>> 1 622013-212
>>> 2 180977-212
>>> 1 1C4981-212
>>> 2 286922-212
>>> 3 452044-212
>>> 2 458162-212
>>>
>>> El resultado de la tabla seria:
>>>
>>> NIVEL PADRE Numero de parte
>>> 0 240686-212
>>> 1 240686-212 265766-212
>>> 1 240686-212 622013-212
>>> 2 622013-212 180977-212
>>> 1 240686-212 1C4981-212
>>> 2 1C4981-212 286922-212
>>> 3 286922-212 452044-212
>>> 2 1C4981-212 458162-212



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida