Visual Basic - Macro para excel

Life is soft - evento anual de software empresarial
 
Vista:

Macro para excel

Publicado por l459 (1 intervención) el 29/01/2013 21:01:09
tengo una matriz de l3 a q9, con distintos números, a continuación tengo las siguientes formulas en las celdas:

s4: {=si.error(si(max(($l$3:$q3=l4)*fila($s$3:$x3))=0;"";fila(s4)-max(($l$3:$q3=l4)*fila($s$3:$x3)));"") }

t4: {=si.error(si(max(($l$3:$q3=m4)*fila($s$3:$x3))=0;"";fila(t4)-max(($l$3:$q3=m4)*fila($s$3:$x3)));"") }

u4: { =si.error(si(max(($l$3:$q3=n4)*fila($s$3:$x3))=0;"";fila(u4)-max(($l$3:$q3=n4)*fila($s$3:$x3)));"") }

v4: {=si.error(si(max(($l$3:$q3=o4)*fila($s$3:$x3))=0;"";fila(v4)-max(($l$3:$q3=o4)*fila($s$3:$x3)));"") }

w4: {=si.error(si(max(($l$3:$q3=p4)*fila($s$3:$x3))=0;"";fila(w4)-max(($l$3:$q3=p4)*fila($s$3:$x3)));"") }

x4: {=si.error(si(max(($l$3:$q3=q4)*fila($s$3:$x3))=0;"";fila(x4)-max(($l$3:$q3=q4)*fila($s$3:$x3)));"") }

s5: {=si.error(si(max(($l$3:$q4=l5)*fila($s$3:$x4))=0;"";fila(s5)-max(($l$3:$q4=l5)*fila($s$3:$x4)));"") }

t5: {=si.error(si(max(($l$3:$q4=m5)*fila($s$3:$x4))=0;"";fila(t5)-max(($l$3:$q4=m5)*fila($s$3:$x4)));"") }

u5: {=si.error(si(max(($l$3:$q4=n5)*fila($s$3:$x4))=0;"";fila(u5)-max(($l$3:$q4=n5)*fila($s$3:$x4)));"") }

v5: {=si.error(si(max(($l$3:$q4=o5)*fila($s$3:$x4))=0;"";fila(v5)-max(($l$3:$q4=o5)*fila($s$3:$x4)));"") }

w5: {=si.error(si(max(($l$3:$q4=p5)*fila($s$3:$x4))=0;"";fila(w5)-max(($l$3:$q4=p5)*fila($s$3:$x4)));"") }

x5: {=si.error(si(max(($l$3:$q4=q5)*fila($s$3:$x4))=0;"";fila(x5)-max(($l$3:$q4=q5)*fila($s$3:$x4)));"") }

…… hasta las celdas:

s9: { =si.error(si(max(($l$3:$q8=l9)*fila($s$3:$x8))=0;"";fila(s9)-max(($l$3:$q8=l9)*fila($s$3:$x8)));"") }

t9: { =si.error(si(max(($l$3:$q8=m9)*fila($s$3:$x8))=0;"";fila(t9)-max(($l$3:$q8=m9)*fila($s$3:$x8)));"") }

u9: { =si.error(si(max(($l$3:$q8=n9)*fila($s$3:$x8))=0;"";fila(u9)-max(($l$3:$q8=n9)*fila($s$3:$x8)));"") }

v9: { =si.error(si(max(($l$3:$q8=o9)*fila($s$3:$x8))=0;"";fila(v9)-max(($l$3:$q8=o9)*fila($s$3:$x8)));"") }

w9: { =si.error(si(max(($l$3:$q8=p9)*fila($s$3:$x8))=0;"";fila(w9)-max(($l$3:$q8=p9)*fila($s$3:$x8)));"") }

x9: {=si.error(si(max(($l$3:$q8=q9)*fila($s$3:$x8))=0;"";fila(x9)-max(($l$3:$q8=q9)*fila($s$3:$x8)));"") }

luego tengo de la celda ab23 a ab71 valores; y en la columna de al lado de ac23 a ac71, las siguientes formulas:

ac23: =si.error(si(max(($l$3:$q$8=ab23)*fila($s$3:$x$8))=0;0;fila(s$9)-max(($l$3:$q$8=ab23)*fila($s$3:$x$8)));0)

ac24: =si.error(si(max(($l$3:$q$8=ab24)*fila($s$3:$x$8))=0;0;fila(s$9)-max(($l$3:$q$8=ab24)*fila($s$3:$x$8)));0)
……
ac71: =si.error(si(max(($l$3:$q$8=ab71)*fila($s$3:$x$8))=0;0;fila(s$9)-max(($l$3:$q$8=ab71)*fila($s$3:$x$8)));0)

la cosa está en que cada vez que ejecute la macro, se realice lo siguiente:

1. que se pongan solas las formulas siguientes en :

s9: { =si.error(si(max(($l$3:$q9=l10)*fila($s$3:$x9))=0;"";fila(s10)-max(($l$3:$q9=l10)*fila($s$3:$x9)));"")}

t9: { =si.error(si(max(($l$3:$q9=m10)*fila($s$3:$x9))=0;"";fila(t10)-max(($l$3:$q9=m10)*fila($s$3:$x9)));"")}

u9: { =si.error(si(max(($l$3:$q9=n10)*fila($s$3:$x9))=0;"";fila(u10)-max(($l$3:$q9=n10)*fila($s$3:$x9)));"")}

v9: { =si.error(si(max(($l$3:$q9=o10)*fila($s$3:$x9))=0;"";fila(v10)-max(($l$3:$q9=o10)*fila($s$3:$x9)));"")}

w9: { =si.error(si(max(($l$3:$q9=p10)*fila($s$3:$x9))=0;"";fila(w10)-max(($l$3:$q9=p10)*fila($s$3:$x9)));"")}

x9: {=si.error(si(max(($l$3:$q9=q10)*fila($s$3:$x9))=0;"";fila(x10)-max(($l$3:$q9=q10)*fila($s$3:$x9)));"")}

2. que se actualicen las formulas de la siguiente manera en las ubicaciones:

ac23: { =si.error(si(max(($l$3:$q$9=ab23)*fila($s$3:$x$9))=0;0;fila(s$10)-max(($l$3:$q$9=ab23)*fila($s$3:$x$9)));0) }

ac24: {=si.error(si(max(($l$3:$q$9=ab24)*fila($s$3:$x$9))=0;0;fila(s$10)-max(($l$3:$q$9=ab24)*fila($s$3:$x$9)));0) }
……

ac71: { =si.error(si(max(($l$3:$q$9=ab71)*fila($s$3:$x$9))=0;0;fila(s$10)-max(($l$3:$q$9=ab71)*fila($s$3:$x$9)));0) }

cada vez que ejecute la macro que me avance todo como en el ejemplo expuesto, teniendo encuenta que ire añadiendo filas, 9,10,11….
gracias y un saludo


tengo una matriz de l3 a q9, con distintos números, a continuación tengo las siguientes formulas en las celdas:

s4: {=si.error(si(max(($l$3:$q3=l4)*fila($s$3:$x3))=0;"";fila(s4)-max(($l$3:$q3=l4)*fila($s$3:$x3)));"")}
t4:{=si.error(si(max(($l$3:$q3=m4)*fila($s$3:$x3))=0;"";fila(t4)-max(($l$3:$q3=m4)*fila($s$3:$x3)));"")}
u4: {=si.error(si(max(($l$3:$q3=n4)*fila($s$3:$x3))=0;"";fila(u4)-max(($l$3:$q3=n4)*fila($s$3:$x3)));"") }
v4: {=si.error(si(max(($l$3:$q3=o4)*fila($s$3:$x3))=0;"";fila(v4)-max(($l$3:$q3=o4)*fila($s$3:$x3)));"") }
w4: {=si.error(si(max(($l$3:$q3=p4)*fila($s$3:$x3))=0;"";fila(w4)-max(($l$3:$q3=p4)*fila($s$3:$x3)));"")}
x4: {=si.error(si(max(($l$3:$q3=q4)*fila($s$3:$x3))=0;"";fila(x4)-max(($l$3:$q3=q4)*fila($s$3:$x3)));"")}
s5: {=si.error(si(max(($l$3:$q4=l5)*fila($s$3:$x4))=0;"";fila(s5)-max(($l$3:$q4=l5)*fila($s$3:$x4)));"")}
t5: {=si.error(si(max(($l$3:$q4=m5)*fila($s$3:$x4))=0;"";fila(t5)-max(($l$3:$q4=m5)*fila($s$3:$x4)));"")}
u5:{=si.error(si(max(($l$3:$q4=n5)*fila($s$3:$x4))=0;"";fila(u5)-max(($l$3:$q4=n5)*fila($s$3:$x4)));"") }
v5: {=si.error(si(max(($l$3:$q4=o5)*fila($s$3:$x4))=0;"";fila(v5)-max(($l$3:$q4=o5)*fila($s$3:$x4)));"") }
w5: {=si.error(si(max(($l$3:$q4=p5)*fila($s$3:$x4))=0;"";fila(w5)-max(($l$3:$q4=p5)*fila($s$3:$x4)));"")}
x5: {=si.error(si(max(($l$3:$q4=q5)*fila($s$3:$x4))=0;"";fila(x5)-max(($l$3:$q4=q5)*fila($s$3:$x4)));"")}
…… hasta las celdas:
s9:{ =si.error(si(max(($l$3:$q8=l9)*fila($s$3:$x8))=0;"";fila(s9)-max(($l$3:$q8=l9)*fila($s$3:$x8)));"")}
t9:{ =si.error(si(max(($l$3:$q8=m9)*fila($s$3:$x8))=0;"";fila(t9)-max(($l$3:$q8=m9)*fila($s$3:$x8)));"")}
u9: {=si.error(si(max(($l$3:$q8=n9)*fila($s$3:$x8))=0;"";fila(u9)-max(($l$3:$q8=n9)*fila($s$3:$x8)));"") }
v9: {=si.error(si(max(($l$3:$q8=o9)*fila($s$3:$x8))=0;"";fila(v9)-max(($l$3:$q8=o9)*fila($s$3:$x8)));"") }
w9:{ =si.error(si(max(($l$3:$q8=p9)*fila($s$3:$x8))=0;"";fila(w9)-max(($l$3:$q8=p9)*fila($s$3:$x8)));"")}
x9: {=si.error(si(max(($l$3:$q8=q9)*fila($s$3:$x8))=0;"";fila(x9)-max(($l$3:$q8=q9)*fila($s$3:$x8)));"")}
luego tengo de la celda ab23 a ab71 valores; y en la columna de al lado de ac23 a
ac71, las siguientes formulas:

ac23: =si.error(si(max(($l$3:$q$8=ab23)*fila($s$3:$x$8))=0;0;fila(s$9)-max(($l$3:$q$8=ab23)*fila($s$3:$x$8)));0)
ac24: =si.error(si(max(($l$3:$q$8=ab24)*fila($s$3:$x$8))=0;0;fila(s$9)-max(($l$3:$q$8=ab24)*fila($s$3:$x$8)));0)
……
ac71: =si.error(si(max(($l$3:$q$8=ab71)*fila($s$3:$x$8))=0;0;fila(s$9)-max(($l$3:$q$8=ab71)*fila($s$3:$x$8)));0)
la cosa está en que cada vez que ejecute la macro, se realice lo siguiente:
1.que se pongan solas las formulas siguiente en :
s9:=si.error(si(max(($l$3:$q9=l10)*fila($s$3:$x9))=0;"";fila(s10)-max(($l$3:$q9=l10)*fila($s$3:$x9)));"")}
t9:{ =si.error(si(max(($l$3:$q9=m10)*fila($s$3:$x9))=0;"";fila(t10)-max(($l$3:$q9=m10)*fila($s$3:$x9)));"")}
u9: {=si.error(si(max(($l$3:$q9=n10)*fila($s$3:$x9))=0;"";fila(u10)-max(($l$3:$q9=n10)*fila($s$3:$x9)));"")}
v9: {=si.error(si(max(($l$3:$q9=o10)*fila($s$3:$x9))=0;"";fila(v10)-max(($l$3:$q9=o10)*fila($s$3:$x9)));"")}
w9:{ =si.error(si(max(($l$3:$q9=p10)*fila($s$3:$x9))=0;"";fila(w10)-max(($l$3:$q9=p10)*fila($s$3:$x9)));"")}
x9: {=si.error(si(max(($l$3:$q9=q10)*fila($s$3:$x9))=0;"";fila(x10)-max(($l$3:$q9=q10)*fila($s$3:$x9)));"")}
2.que se actualicen las formulas de la siguiente manera en las ubicaciones:
ac23: { =si.error(si(max(($l$3:$q$9=ab23)*fila($s$3:$x$9))=0;0;fila(s$10)-max(($l$3:$q$9=ab23)*fila($s$3:$x$9)));0)
ac24: {=si.error(si(max(($l$3:$q$9=ab24)*fila($s$3:$x$9))=0;0;fila(s$10)-max(($l$3:$q$9=ab24)*fila($s$3:$x$9)));0)}
……
ac71: { =si.error(si(max(($l$3:$q$9=ab71)*fila($s$3:$x$9))=0;0;fila(s$10)-max(($l$3:$q$9=ab71)*fila($s$3:$x$9)));0)}

cada vez que ejecute la macro que me avance todo como en el ejemplo expuesto, teniendo encuenta que ire añadiendo filas, 9,10,11….
gracias y un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Macro para excel

Publicado por Guillermo (3 intervenciones) el 01/03/2013 20:58:28
Estimado, creo que mucha formula y poco contenido, se te podría ayudar más si pudieras entregar mejor el concepto de lo que quieres conseguir, porque las formulas que utilizas que la verdad no me dicen mucho.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar