Macro inserta fila y columna

Buenas, darte las gracias porque funciona correctamente, pero mi cuestión es que yo creía que haría en toda la hoja la suma, me explico mis datos se encuentran de lasiguiente manera distribuidos:
no me deja pegar una imagen, para que veas como, pero bueno, intentaré explicartelo:
mis datos van de la columna A a la S, desde la fila 5 a la 2980 y lo que me has pasado está muy bien pero solo lo hace para la celda activa, es decir si me pongo en la columna B lo hace para todas me inserta una fila cada cuatro pero la suma solo aparece en la columna b y yo querría que sucediera en las columnas  C F I L O R es decir la macro que me has mandado pero que me lo hiciera en esas columnas.
Espero pueda ayudarme, en caso de que no MIL GRACIAS DE TODAS FORMAS POR AYUDARME CON LA ANTERIOR PREGUNTA.

1 respuesta

Respuesta
1
Perdon lo burdo de la respuesta pero me quede sin tiempo... hubiera sido mejor un blucle anidado.
Pero sin duda esto te servira y resolvera tu problem
Private Sub CommandButton1_Click()
Range("c5").Select
While ActiveCell.Value <> ""
ActiveCell.Offset(4, 0).Select
Selection.EntireRow.Insert
num1 = ActiveCell.Offset(-4, 0)
num2 = ActiveCell.Offset(-3, 0)
num3 = ActiveCell.Offset(-2, 0)
num4 = ActiveCell.Offset(-1, 0)
ActiveCell = WorksheetFunction.Sum(num1, num2, num3, num4)
ActiveCell.Offset(0, 3).Select
num1 = ActiveCell.Offset(-4, 0)
num2 = ActiveCell.Offset(-3, 0)
num3 = ActiveCell.Offset(-2, 0)
num4 = ActiveCell.Offset(-1, 0)
ActiveCell = WorksheetFunction.Sum(num1, num2, num3, num4)
ActiveCell.Offset(0, 3).Select
num1 = ActiveCell.Offset(-4, 0)
num2 = ActiveCell.Offset(-3, 0)
num3 = ActiveCell.Offset(-2, 0)
num4 = ActiveCell.Offset(-1, 0)
ActiveCell = WorksheetFunction.Sum(num1, num2, num3, num4)
ActiveCell.Offset(0, 3).Select
num1 = ActiveCell.Offset(-4, 0)
num2 = ActiveCell.Offset(-3, 0)
num3 = ActiveCell.Offset(-2, 0)
num4 = ActiveCell.Offset(-1, 0)
ActiveCell = WorksheetFunction.Sum(num1, num2, num3, num4)
ActiveCell.Offset(0, 3).Select
num1 = ActiveCell.Offset(-4, 0)
num2 = ActiveCell.Offset(-3, 0)
num3 = ActiveCell.Offset(-2, 0)
num4 = ActiveCell.Offset(-1, 0)
ActiveCell = WorksheetFunction.Sum(num1, num2, num3, num4)
ActiveCell.Offset(0, 3).Select
num1 = ActiveCell.Offset(-4, 0)
num2 = ActiveCell.Offset(-3, 0)
num3 = ActiveCell.Offset(-2, 0)
num4 = ActiveCell.Offset(-1, 0)
ActiveCell = WorksheetFunction.Sum(num1, num2, num3, num4)
ActiveCell.Offset(1, -15).Select
Wend
End Sub
Ya no hay necesida de colocarte en la celda inicial... ya lo modifique, va a empezar desde la celda c5
Salu2... mañana me doy una vuelta
Sorry este es el codigo:
Private Sub CommandButton1_Click()
Range("c5").Select
While ActiveCell.Value <> ""
ActiveCell.Offset(4, 0).Select
Selection.EntireRow.Insert
num1 = ActiveCell.Offset(-4, 0)
num2 = ActiveCell.Offset(-3, 0)
num3 = ActiveCell.Offset(-2, 0)
num4 = ActiveCell.Offset(-1, 0)
ActiveCell = WorksheetFunction.Sum(num1, num2, num3, num4)
ActiveCell.Offset(0, 3).Select
ActiveCell = WorksheetFunction.Sum(num1, num2, num3, num4)
ActiveCell.Offset(0, 3).Select
ActiveCell = WorksheetFunction.Sum(num1, num2, num3, num4)
ActiveCell.Offset(0, 3).Select
ActiveCell = WorksheetFunction.Sum(num1, num2, num3, num4)
ActiveCell.Offset(0, 3).Select
ActiveCell = WorksheetFunction.Sum(num1, num2, num3, num4)
ActiveCell.Offset(0, 3).Select
ActiveCell = WorksheetFunction.Sum(num1, num2, num3, num4)
ActiveCell.Offset(1, -15).Select
Wend
End Sub
Mas cortito, aunque el otro tambien funciona, solo que repeti lo mismo(muy innecesario)...
Sobrex!
Es genial, aunque debo comentarte un par de cosas, si quisiera que esa suma de los cuatro números me lo dividiera por 4 y que además me pusiera la celda donde aparece la suma de otro color diferente cómo quedaría. Perdona por molestarte tanto
Disculpa de nuevo, la he probado y si que funciona, pero me pone la suma de la columna C en el resto y en las otras columnas son diferentes datos, es decir que debería recorrer cada columna de manera independiente, no sé si puede hacer o  si me he explicado.
Perdona las molestias.
No, una disculpa a ti, pues ayer tenia algo de prisa y ya no revise el ultimo codigo que te mande. En efecto la macro tiene un error y hace precisamente lo que dices.
Perooooo... el primer codigo que te mande si esta bien, elimine parte escencial de el resultado... sorry!
En cuanto a tu nueva peticion, ya lo tengo completo:
Private Sub CommandButton1_Click()
Range("c5").Select
While ActiveCell.Value <> ""
ActiveCell.Offset(4, 0).Select
Selection.EntireRow.Insert
num1 = ActiveCell.Offset(-4, 0)
num2 = ActiveCell.Offset(-3, 0)
num3 = ActiveCell.Offset(-2, 0)
num4 = ActiveCell.Offset(-1, 0)
ActiveCell = WorksheetFunction.Sum(num1, num2, num3, num4)
With ActiveCell.Interior
.Color = 65535
End With
ActiveCell.Offset(0, 3).Select
num1 = ActiveCell.Offset(-4, 0)
num2 = ActiveCell.Offset(-3, 0)
num3 = ActiveCell.Offset(-2, 0)
num4 = ActiveCell.Offset(-1, 0)
ActiveCell = WorksheetFunction.Sum(num1, num2, num3, num4)
With ActiveCell.Interior
.Color = 65535
End With
ActiveCell.Offset(0, 3).Select
num1 = ActiveCell.Offset(-4, 0)
num2 = ActiveCell.Offset(-3, 0)
num3 = ActiveCell.Offset(-2, 0)
num4 = ActiveCell.Offset(-1, 0)
ActiveCell = WorksheetFunction.Sum(num1, num2, num3, num4)
With ActiveCell.Interior
.Color = 65535
End With
ActiveCell.Offset(0, 3).Select
num1 = ActiveCell.Offset(-4, 0)
num2 = ActiveCell.Offset(-3, 0)
num3 = ActiveCell.Offset(-2, 0)
num4 = ActiveCell.Offset(-1, 0)
ActiveCell = WorksheetFunction.Sum(num1, num2, num3, num4)
With ActiveCell.Interior
.Color = 65535
End With
ActiveCell.Offset(0, 3).Select
num1 = ActiveCell.Offset(-4, 0)
num2 = ActiveCell.Offset(-3, 0)
num3 = ActiveCell.Offset(-2, 0)
num4 = ActiveCell.Offset(-1, 0)
ActiveCell = WorksheetFunction.Sum(num1, num2, num3, num4)
With ActiveCell.Interior
.Color = 65535
End With
ActiveCell.Offset(0, 3).Select
num1 = ActiveCell.Offset(-4, 0)
num2 = ActiveCell.Offset(-3, 0)
num3 = ActiveCell.Offset(-2, 0)
num4 = ActiveCell.Offset(-1, 0)
ActiveCell = WorksheetFunction.Sum(num1, num2, num3, num4)
With ActiveCell.Interior
.Color = 65535
End With
ActiveCell.Offset(1, -15).Select
Wend
End Sub
El color con que quedaria es amarillo (pues no lo especificaste), pero se lo puedes cambiar, si no conoces el numero prueba grabando una macro en cualquier celda y le pones el color que deseas, despues te vas al codigo y ves que numero tiene y lo cargas en este codigo que te mande (para cada uno de los .color)
No entendi muy bien lo de que te lo divida por 4, ¿las celda o que cosa?... si lo que divida entre cuatro sin importar si al final son solo 3 o 2 o 1 valores, entones haz esto final de cada ActiveCell = WorksheetFunction. Sum(num1, num2, num3, num4)/4
si lo que kieres es que saque el promedio de la suma entonces pon este codigo:
Private Sub CommandButton1_Click()
Range("c5").Select
While ActiveCell.Value <> ""
ActiveCell.Offset(4, 0).Select
Selection.EntireRow.Insert
num1 = ActiveCell.Offset(-4, 0)
num2 = ActiveCell.Offset(-3, 0)
num3 = ActiveCell.Offset(-2, 0)
num4 = ActiveCell.Offset(-1, 0)
ActiveCell = WorksheetFunction.Average(num1, num2, num3, num4)
With ActiveCell.Interior
.Color = 65535
End With
ActiveCell.Offset(0, 3).Select
num1 = ActiveCell.Offset(-4, 0)
num2 = ActiveCell.Offset(-3, 0)
num3 = ActiveCell.Offset(-2, 0)
num4 = ActiveCell.Offset(-1, 0)
ActiveCell = WorksheetFunction.Average(num1, num2, num3, num4)
With ActiveCell.Interior
.Color = 65535
End With
ActiveCell.Offset(0, 3).Select
num1 = ActiveCell.Offset(-4, 0)
num2 = ActiveCell.Offset(-3, 0)
num3 = ActiveCell.Offset(-2, 0)
num4 = ActiveCell.Offset(-1, 0)
ActiveCell = WorksheetFunction.Average(num1, num2, num3, num4)
With ActiveCell.Interior
.Color = 65535
End With
ActiveCell.Offset(0, 3).Select
num1 = ActiveCell.Offset(-4, 0)
num2 = ActiveCell.Offset(-3, 0)
num3 = ActiveCell.Offset(-2, 0)
num4 = ActiveCell.Offset(-1, 0)
ActiveCell = WorksheetFunction.Average(num1, num2, num3, num4)
With ActiveCell.Interior
.Color = 65535
End With
ActiveCell.Offset(0, 3).Select
num1 = ActiveCell.Offset(-4, 0)
num2 = ActiveCell.Offset(-3, 0)
num3 = ActiveCell.Offset(-2, 0)
num4 = ActiveCell.Offset(-1, 0)
ActiveCell = WorksheetFunction.Average(num1, num2, num3, num4)
With ActiveCell.Interior
.Color = 65535
End With
ActiveCell.Offset(0, 3).Select
num1 = ActiveCell.Offset(-4, 0)
num2 = ActiveCell.Offset(-3, 0)
num3 = ActiveCell.Offset(-2, 0)
num4 = ActiveCell.Offset(-1, 0)
ActiveCell = WorksheetFunction.Average(num1, num2, num3, num4)
With ActiveCell.Interior
.Color = 65535
End With
ActiveCell.Offset(1, -15).Select
Wend
End Sub
Sobrex!... espero te vaya bien... sino ya sabes q aky ando
MUCHÍSIMAS GRACIAS!!!! Funciona a la perfección, una última cuestión y ya no te molesto más, bueno dos cuestiones, una vez que he ejecutado esta macro, me gustaría sacar la media de los 6 valores en amarillo que quedan, y por supuesto cada cuatro cómo en la macro, es decir que me aparezca la media de los seis valores en amarillo en otra columna por ejemplo en la T o posteriores, se podría?
La otra cuestión es donde puedo localizar algún buen manual con ejemplos de macros para intentar poder hacerlas yo, el que vengan ejemplos, y así intentar aprender, me sería de gran ayuda.
Pero ante todo MUCHÍSIMAS GRACIAS DE VERDAD.
De nada man, para eso andamos!
Mira el codigo quedaria asi:
Private Sub CommandButton1_Click()
Range("c5").Select
While ActiveCell.Value <> ""
ActiveCell.Offset(4, 0).Select
Selection.EntireRow.Insert
num1 = ActiveCell.Offset(-4, 0)
num2 = ActiveCell.Offset(-3, 0)
num3 = ActiveCell.Offset(-2, 0)
num4 = ActiveCell.Offset(-1, 0)
ActiveCell = WorksheetFunction.Average(num1, num2, num3, num4)
With ActiveCell.Interior
.Color = 65535
End With
ActiveCell.Offset(0, 3).Select
num1 = ActiveCell.Offset(-4, 0)
num2 = ActiveCell.Offset(-3, 0)
num3 = ActiveCell.Offset(-2, 0)
num4 = ActiveCell.Offset(-1, 0)
ActiveCell = WorksheetFunction.Average(num1, num2, num3, num4)
With ActiveCell.Interior
.Color = 65535
End With
ActiveCell.Offset(0, 3).Select
num1 = ActiveCell.Offset(-4, 0)
num2 = ActiveCell.Offset(-3, 0)
num3 = ActiveCell.Offset(-2, 0)
num4 = ActiveCell.Offset(-1, 0)
ActiveCell = WorksheetFunction.Average(num1, num2, num3, num4)
With ActiveCell.Interior
.Color = 65535
End With
ActiveCell.Offset(0, 3).Select
num1 = ActiveCell.Offset(-4, 0)
num2 = ActiveCell.Offset(-3, 0)
num3 = ActiveCell.Offset(-2, 0)
num4 = ActiveCell.Offset(-1, 0)
ActiveCell = WorksheetFunction.Average(num1, num2, num3, num4)
With ActiveCell.Interior
.Color = 65535
End With
ActiveCell.Offset(0, 3).Select
num1 = ActiveCell.Offset(-4, 0)
num2 = ActiveCell.Offset(-3, 0)
num3 = ActiveCell.Offset(-2, 0)
num4 = ActiveCell.Offset(-1, 0)
ActiveCell = WorksheetFunction.Average(num1, num2, num3, num4)
With ActiveCell.Interior
.Color = 65535
End With
ActiveCell.Offset(0, 3).Select
num1 = ActiveCell.Offset(-4, 0)
num2 = ActiveCell.Offset(-3, 0)
num3 = ActiveCell.Offset(-2, 0)
num4 = ActiveCell.Offset(-1, 0)
ActiveCell = WorksheetFunction.Average(num1, num2, num3, num4)
With ActiveCell.Interior
.Color = 65535
End With
ActiveCell.Offset(0, 2).Select
num1 = ActiveCell.Offset(0, -2)
num2 = ActiveCell.Offset(0, -5)
num3 = ActiveCell.Offset(0, -8)
num4 = ActiveCell.Offset(0, -11)
num5 = ActiveCell.Offset(0, -14)
num6 = ActiveCell.Offset(0, -17)
ActiveCell = WorksheetFunction.Average(num1, num2, num3, num4, num5, num6)
With ActiveCell.Interior
.Color = 65535
End With
ActiveCell.Offset(1, -17).Select
Wend
End Sub
Y respecto al manual, la verdad yo no soy experto en programacion vba, soy digamos entre medio y principiante.
Yo aprendi con la practica... y un poco de otra que si es toda una experta puedes checar su pagina en http://aplicaexcel.galeon.com/index.htm...
espero te sirva... sobrex!... cuidate!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas